日々drdrする人のメモ

今日もdrdr、明日もdrdr

ACM-ICPC 2017 Asia Nakhon Pathom Regional に参加した話

12/21~12/23に行われたACM-ICPC アジア地区 ナコーンパトム大会の参加記です。

ACM-ICPC Asia 2017
チームIQ1(自分、ちゃっく、kuwa氏、コーチのshimomireさん)でタイのナコーンパトムに行きました。

f:id:smijake3:20171227171454j:plain:w480

準備とか

11月上旬までパスポートをとってなくて、パスポート取得RTAをしてた。
あと、現地のsimを使える別の端末用意しようと思ってsimフリー端末買ったりした。

出発当日 (12/19)

朝6時半起床。大岡山駅でshimomireさんと合流して羽田空港に向かう。
空港到着後、ちゃっくとkuwa氏に合流。搭乗手続き等を済まし、飛行機でタイのスワンナプーム空港に向かった。

飛行機は6時間くらい乗ってた。飛行機内では、いろんな映画やJ-POPなどの音楽が提供されてたのでそれで暇つぶししてた。
機内食が出たけど、カツ丼が味が薄くておいしくなかった気がする。

タイの空港についた後、タクシーでバンコク内のホテルに移動。チェックインした後、夕食としてホテルのビュッフェ食べてた。

タイのご飯は基本タイ米でぱっさりしているのと、タイ特有の謎の風味がついているのであまりおいしくなかった。
🍖とかはおいしかった。あと、チリソースめっちゃかけたらすごく辛かった(それはそう)。

ナコーンパトムへ移動 (12/20)

ナコーンパトムのホテルに移動する前にタクシーでWat Phoに行って観光してた。昼は暑かった。
f:id:smijake3:20171227171732j:plain:w480

その後ナコーンパトムのホテルに移動。ホテルとしてRoyal Gemsのゴルフ場内のホテルを利用。
夜が暗いゴルフ場内は、狂犬病が怖い野犬が多く徘徊してて、タクシーなしではホテル外に出るのが厳しい場所だった。

ホテルのレストランで自分とkuwa氏が天ぷらうどんを注文したら、厨房が注文を聞き間違えて天ぷらが出てきて笑ってた。


その後きちんと天ぷらうどんが出てきておいしかった。

あと、kuwa氏と使う部屋のベッドがダブルベッドで困った(ちゃっくとshimomireさんの方の部屋はツインベッドだった)。結局2人の間をいろんなもので上手く隔てて寝てた。

アジア地区 ナコーンパトム大会 (12/21~12/23)

ナコーンパトム大会はMahidol大学で行われた。

1日目に受付とPractice Session、2日目にコンテスト、3日目にエクスカーション(観光ツアー)という感じだった。
大会側がRoyal Gemsのホテルからバンを出してくれるが、朝が早い(1,2日目は7時45分, 3日目は7時半)ため、常に寝不足だった。また、各日の大会の予定が終わった直後にバンが迎えに来るため、買い出しに行けないまま外に出づらいホテルに戻されるのは少しきつかった。

1日目: 受付、Practice Session (12/21)

ホテルから出るバンに乗ってMahidol大学に着いた後、受付を済まして名札とTシャツをもらった。
TシャツにはICPCの刺繍がしてあってしっかり作られていた。

大会の始めにOpening Ceremonyがあった。
その中で流れたMahidol大学の紹介ムービーがかっこよかった。

その後、昼ごはんを食べてPractice Session。
Practice Sessionの前にAllow materials inspectionがあり、持ち込めないバッグなどを預けた。
この大会ではライブラリとしてA4用紙25枚まで、コピー3部の持ち込みが許されていた。持ち込むライブラリはkuwa氏がまとめてくれてた。

本番で使えるPC環境はPractice Session直前まで分からず、どんな環境が来るかドキドキしてた。
Practice Session直前でGCC 5.4ぐらいが使えることが発表された。意外と最新だった。

コンテストでは、つくば大会みたいにPythonは使えないのでC++で書いてた。

Practice Sessionは1時間半で3問。つくば大会をイメージしてたので簡単な問題かと思ったらそこそこの難易度だった。

以下、Practice Session中の流れ:

  • A問題をちゃっく、B問題をkuwa氏、C問題を自分が担当。
  • C問題は、各頂点 {i}にコスト {Q_i}がある頂点数 {N (\le 10^5)}の木が与えられて、距離がちょうど4辺分の2つの頂点ペアの内、そのペアのコストの和が最大になる時がいくらか、という問題。どうすればいいか悩む。
  • 悩んでたら、ちゃっくがA問題をつらそうにしてたので一緒に考察してみる。問題としては難しくないが、きちんと読まないと頭がこんがらがる問題で、一緒に解釈を進めながらAC。
  • その後、C問題をちゃっくと共に考え、メモ化DFSでいけそうだと思い実装するが見事にバグり、そのままコンテスト終了。

Practice Sessionの結果はABの2完で、全完しときたかったなという気持ちだった。

その後、簡単な食事を取り、バンでホテルまで帰還。

夕食として、ホテルのレストランで天丼を食べた。米が日本米でおいしかった。

2日目: コンテスト本番 (12/22)

6時半に起きて、このホテル宿泊で無料で食べられる朝食ビュッフェを食べる。

食べた後、バンでMahidol大学に向かう。到着後、受付を行いコンテスト会場に入る。
会場の机には、パンと水がおいてあった。(コンテスト中に食べた)

コンテストは5時間で12問、問題の難易度の順序は完全にランダム。

以下、コンテスト中の流れ (大雑把な時系列順):

  • 開始直後は問題を前から4問ごとに分割し、ちゃっくがABCD、kuwa氏がEFGH、自分がIJKLを読むことにする。
  • kuwa氏がH問題ができそうと言って書いて出すもTLEになる。その後、C問題が多く解かれていたためkuwa氏が実装しAC。ちゃっくはA問題の数式をいじっていた。
  • 自分はJ問題が解けそうだと考え、考察をまとめた上で実装しAC。
  • 解かれている問題見てたらG問題が多かったため、kuwa氏が手を付け実装して提出。AC。
  • I問題は正6角形の連結をBFSで見つけるだけっぽかったので手をつける。正6角形を1点と見なして探索すればいいと思い実装を始める。
  • I問題を実装してたら突然PCに触らないように指示され困惑する(何が起きているのかは全くわからなかった)。10~15分後にPCを使っていいと言われ実装を再開。(その後のコンテスト延長はなかった)
  • I問題の実装が終わったのでテストケースで試そうとする。電子データのテストケースがないため、50行以上のテストケースをタイピングするゲームが始まり、途中で1行抜けてサンプル合わねえってなってた。その後、サンプルが合ったので提出するもWA。この後、辺の重複が存在するかわからなかったのでclar投げたら重複するっぽいことがわかり、修正して提出。なぜか提出してからジャッジが終わるまで10分ぐらいかかってたがAC。
  • I問題をACするまでの間に、ちゃっくがA問題を提出、ACをとる。
  • kuwa氏がH問題、自分がE問題、ちゃっくがL問題を考察する。自分はE問題の考察をまとめてコードを書くがサンプルが合わない。原因がわからずそのまま終了。

コンテスト後にE問題のclarを見ると、問題文中の"minimum"が"maximum"だったという言及があり、問題が変わっててキレた。
また、H問題はfloat128で殴ると通せるという話。厳しい。


コンテストの結果、ACGIJの5完で15位。もう少し解きたかった。
f:id:smijake3:20171226020405p:plain

コンテスト後は昼食を食べていた。
その後、結果発表があった。チームnocowさんが表彰されてた。

この後、Mahidol Prince Hallで Petrushka and the Seven Winds の公演があった。大会参加者は無料で見ることができた。
Petrushka and the Seven Winds


オーケストラ + 劇という感じ。疲れすぎてオーケストラの間寝てた。劇は理解するにはちょっと難しかった。予習していれば楽しめそうだった。

3日目: エクスカーション (12/23)

朝早く起床して、バンでMahidol大学へ。
バンで8時についたのにエクスカーション開始9時と書いてあって、時間まで待つ。

待ってたら9時前にツアーバスに乗れるようになったので搭乗。2階建てバスだった。

観光ツアーは Phra Pathom Chedi → Thai Human Imagery Museum → Phutthamonthon という順番でまわった。
f:id:smijake3:20171227175429j:plain:w320

エクスカーションの後、みんなでマッサージ受けに行く話になって、近くのSalaya駅周辺でマッサージ屋さんに行った。
マッサージとしてタイマッサージを受けた。少し痛かった。タイマッサージ1時間で250バーツ(900円いかないくらい)と安かった。

その後、屋台の焼肉屋で🍖を焼いてた。

バンコクへの移動(12/24)

翌日、ナコーンパトムからバンコクに移動し少しの時間観光。
ちょっと乗ってみたかった鉄道に乗ってた。入り口には手荷物検査のアレがあったが検査がゆるかった。鉄道はコインっぽいのが切符なのが新鮮だった。

また、トゥクトゥクに初めて乗ったら、ちゃっくがめっちゃ楽しそうにしてた。トゥクトゥクは3人並んで乗れるが、運転が粗くて左右に座ると(特に曲がる時が)怖かった。

それから、ボートに乗って川観光してて、川の上からいろんな観光名所が見れて楽しかった。
f:id:smijake3:20171227171302j:plain:w480

夕食は、一風堂に入ってラーメン食べてた。日本の🍜でおいしかった。

また、この日はクリスマスイブで、ホテルの従業員がサンタ帽被ってたり、ホテルにクリスマスツリーがあったりしてめっちゃクリスマスしてた。昼暑くて夜涼しいクリスマスイブだった。

帰国 (12/25)

クリスマスである最終日は、タクシーでスワンナプーム空港に移動し、飛行機に乗って帰国。
飛行機内では、ダイハードやホームアローンを見てクリスマス気分になってた()
あと、機内食がちょっとクリスマスしててチキンカレーもおいしかった。
f:id:smijake3:20171227173031j:plain:w480

飛行機が現地15時前に出発して、約5時間後の日本時間22時半に羽田空港に到着。
空港から帰る時に日本が寒すぎてつらくなった。帰宅した時点で日が変わってて、帰国でクリスマスが終わってた。

まとめ

ナコーンパトム大会のコンテストは、わくわくコンテストに振り回されまくって辛かったです。clarをきちんと見るのは大事ですね...。
また、遠征ついでにタイ観光でいろいろ見れたのは楽しかったです。

これで今年のICPCはおしまいです。
私は去年からICPC参加して、今年で二回目で最後の参加でした。みなさんありがとうございました。お疲れ様でした。