ICPCアジア地区横浜大会 2018 参加記

2018/12/08-2018/12/09に行われたICPCアジア地区横浜大会と、2018/12/10の企業見学に参加してきました。 チームはAobayama_dropoutで、メンバーは碧黴さん・ゆきのんさん・僕です。

12/10は月曜日ですが講義はありませんでした。僕視点では。

・前日

生活習慣が崩れていて、前々々日くらいまでは日が昇ってから眠っていました。これではいけないと思ったので気合を入れ、12/8の午前4時ごろ就寝することに成功しました。

・1日目

起床に成功し、午前9時半あたりの新幹線に乗れました。自由席でしたが運よくチームメンバー3人が並んで座れた(仙台始発でしたが並ぶのが遅かったのでギリギリでした)ので、全員でノーパソを開いたりシンカンセンスゴクカタイアイスを買ったりするやつをしました。

東京駅に着き、すぐ横浜に向かいます。横浜駅でいったん降りて、みなとみらい線に乗る前に牛丼チェーン店に行きました。器がとんでもなく汚くて厳しい。

会場最寄り駅につくと、なんとちょっと前の駒場祭でエンカウントした人とまたエンカウントしました。こちらは完全に偶然なのでエンカウント(原義)です。

会場に入ると、これまでの合宿で見覚えのある方がたくさんいて楽しい気分になりました。ボランティアで来ていたらてあさんを見つけて話しかけたのですが、これは不正の可能性があってあまりよくない行動であると注意されました。そうであることだなあ。

olpheさんとかixmelさんとかと少し話して、いよいよpracticeです。僕は特に何も考えていなかったのですが、これは問題を解くことではなくclarを投げたりsubmitをする練習が目的なので、そういうことを優先的にするべきだったみたい?まあ問題も普通に難しくて、過去問から出ていましたが解いていないのでわからず、ちょっと冷えた気分になりました。

終わった後kimiyukiさんから声をかけていただき、チームメンバー3人+kimiyukiさんで食べに行くことになりました。僕ら3人がホテルに荷物を置く関係でいったん別れ、再集合にちょっと手間取りながら、横浜中華街に行きます。ゆきのんさんとkimiyukiさんが辛い物好きということで、麻婆豆腐の店を探して入りました。

中華街近くのSEGAに行くとなんとチュウニズムが1台しかなく、ABCも迫ってきていたので、サッサとホテルに戻ることにしました。

ABCでは自明な改善点を縮めるやつをして最短コードを取りました。

ABCが終わった後チームメンバーで1部屋に集まって明日の相談をします。足りないと思われるライブラリを碧黴さんがネットから拾ってきてまとめていました。僕はコードゴルフをしていました。

この日は日付が変わってすぐに寝ます。

・2日目

起床に成功しました。コンビニで買い物をして会場に向かいます。この日は他のチームと話をするといけない感じなので、チームメンバーで動きを相談したりして時間をつぶします。

いよいよコンテストです。

~コンテスト中~

まず碧黴さんがテンプレートを写す間に、ゆきのんさんがA、僕がB問題を読みます。

ゆきのんさんがAを書けるらしいので入ってもらいますが、僕はB問題が全く分からず、非常に厳しい気分になります。

実際のところ枝刈り全探索で解けそうな雰囲気を感じていて、他の方針を全く思い浮かべられなかったので、いっそのこととりあえず書いて投げてから考えようなどと思いました。

ゆきのんさんがAの実装で詰まっていたので変わってもらい、Bを書いて投げると、なんとAC!かなりうれしかったです。(解法はコンテストが終了したところで書きます。)

ゆきのんさんがまたA問題を書いている間、碧黴さんからC問題を聞きます。

なんか後ろからシミュレーションすればいけそうだという話になりました。A問題が辛そうだったので、ちょっと変わってもらってC問題をサッと書いて、サンプルが合わなかったので印刷して引っ込みます。

碧黴さんとゆきのんさんでA問題を書いている間にCの実装を詰め、A問題が通ったのを見計らってちょっと修正するとサンプルがあったので提出、AC!これもうれしかったです。

次に解かれているのがG問題で、ゆきのんさんが解法を思いついたとのことで聞き、BITを使った実装を提案します。BITのライブラリを提供して実装してもらうとこれもAC!みんなでハイタッチをしました。

この時点で1時間半すぎなので、かなり良いペースでした。他にD問題とK問題が解かれているようだったので、チャレンジします。

僕はK問題を考えていて、2部マッチングが使えるんじゃないかと思い、了解を取ってからライブラリを写し、適当にやってみるとなんとサンプルが合います。喜び勇んで提出……しかしTLE。手元で最大ケースみたいなのを作って試すとウンともスンとも言わなくなったので、ああダメだなとなりました。

僕はパソコンをずっと占有して高速化らしきことをしたりしましたが、オーダーが変わらないのじゃ何やってもダメだろうということで、方針を変えます。なんかセグ木を生やした気がしますが、よく覚えていません。実装を頭の中で考えずに1人で突っ走ったのもよくありませんでした。

D問題は、碧黴さんとゆきのんさんが考えていて、僕もたまに聞いたりしましたが、全然何もわかりませんでした。

結局終了直前にK問題を何回か提出しましたがすべてWA、4完で終了しました。G問題を解いてから何もできなかったのが、このチームの課題点だなあとひしひしと感じました。

~コンテスト終了~

B問題は、setで要素を管理しつつ、2つ要素を選んで初項と第2項にするのをすべて試しました。今まで見つかっている最長の等差数列の長さ+1項目が存在しなければ答えは更新されないので、その時に枝刈りをしました。

懇親会ではらてあさんなどいろいろな方と話したり、ビンゴをそろえてIndeedのTシャツをもらったり、正規表現クロスワードを解いたりしました。立食形式は料理に目移りしている間に立ち疲れて食事できなくなってしまうので、苦手です……。

そのあとchokudaiさん含む有志と横浜のゲームセンターに行きました。ixmelさんに案内してもらって2軒めぐりましたが、横浜ラウンドワンは環境がとてつもなく良くて非常にびっくりしました。

終電がなくなる前にホテルに戻るととんでもなく眠かったので、シャワーも浴びずに寝ました。

・3日目(企業見学)

起床に成功します。大浴場に行ったりしていると微妙に時間が怪しくなりましたが、集合場所まではそこまで時間がかからないようなので一安心。

横浜駅で碧黴さんと別れて(ゆきのんさんはレポートがあるそうで昨日のうちに帰ってしまいました)、電車に乗ります。このとき、新幹線の乗車券を使いました。

恵比寿駅で降りたのですが、ここは使った乗車券では降りないはずの駅だったらしく、危うく改札に吸い込まれ仙台に帰れなくなりかけました。改札を出る直前に駅員さんに確認することで事なきを得ましたが、自動改札では乗車券が吸い込まれると聞いたときはかなり心臓に負担がかかりました。

企業見学1社目はIndeedです。ステキなオフィスを思う存分見て回ることができ、とても憧れました。

2社目はbitFlyerです。お話を聞くだけで終わってしまいました。金融機関なのでオフィスを見せられない、という理由なので仕方ありませんね。(ただ、海外チームに通訳がいないのに日本語でしゃべっていたのは気になりました。)

3社目はMUJINです。お菓子をもらったりロボットを見たりしました。なんだかとても楽しそうな印象でした。

全部回ると日が暮れていたので、MUJINを出てスカイツリーのライトアップを横目に秋葉原に急ぎました。

てぃーいけさんが音ゲーをしているのが面白かったです。あとサウンドボルテックスが難しい。

微妙に急ぎながら新幹線に乗ります。帰りは指定席なので当然座ります。碧黴さんはすぐに寝ました。僕はスマホコードゴルフをしていました。

なんか指定席しかない車両は上野駅にすら停まらないんですね、ハマって新幹線を乗り逃すところでしたが、これはかなり前に気づいたのでOK。途中駅も随分すっ飛ばすので、大宮の次は仙台です。そのあとは盛岡とかなので、さすがに寝過ごすのはまずいなあ……とか考えているうちに仙台についたので、碧黴さんを起こして降車AC。

碧黴さんオススメの駅前のつけ麺屋さんに行ってつけ麺を食べます。そのあとゲーセンの前で解散して、僕はチュウニズムをしてから帰りました。

~感想~

コンテストとしてはあまり納得のいく結果ではなかったですが、とにかく楽しかったのでそれはよかったです。