ACM-ICPC 2017 国内予選 参加記

ICPC国内予選にチーム KazumaDragon として参加しました.
チームメンバーは suibaka(僕), kazuma, nakano の3人.
結果は全体で 18 位,大学内で 2位 でした.
目標は20位以内に入ることだったので,達成できて良かったです.

以下本番終了までの流れを書き残しておきます.

本番当日 開始直前

実験室(会場)が開かれるまで部屋の前でのんびりしていた.
やるだけ問題を解いて軽くエンジンをかけたあと,外に散歩して頭をリフレッシュ.この時,空から何故かアリが降ってきたので,縁起がいいなぁ(?)と思いつつ部屋に戻る.
部屋に入った後は,チームメンバーでチーム戦略を再確認して待機.

本番

役割分担

役割分担としては,僕が実装担当,kazumaはデバッグと考察担当,nakanoは考察(適宜デバッグもする)担当という感じでやりました.
デバッグの比重はかなり重めにしました.

解いた流れ

僕がAを読む.書く.その間にBをkazumaが読んでくれた.nakanoは C 以降に目を通してもらって,考察と全体の配分をイメージしてもらっていた.

Aが通った (5:27) ので,僕も B を読む.これは誤読対策.それでkazumaと解法や制約を突き合わせて,はいということになった.
ちょっと手間どってしまったがなんとかAC (17:42).

次にCをkazumaと 2人で読む.制約を読むとサイズが小さすぎてびっくらこいた.サンプルでREを起こして焦ったがkazumaが添字の書き間違いに気がついてくれた.AC(29:27).

次にDを読む.先に読んでいたnakanoに考察を聞いてみると n と m のサイズで場合分けして半分全列挙 or bitDPでよいらしい.考察するの早くない?一応ちょっと考えると,合っていそうなので書く.Dはバグが怖い(模擬国内での教訓)ので2人に見てもらっていた.一発AC (1:01:03).

(あとになって考えるとなんで30分もかかってるんだろう?あ,僕の実装が遅かっただけか.)

ここら辺で順位を確認すると悪くなかったので,これ以降は安全に行くということになった.

次に E を見る.式短いし,まあ適当に全部試せるんでは?と思いつつnakanoに聞いてみると,dpっぽくやっていくと良いらしい.なるほど,とは思ったもののバグりそうで怖かったので後回し.

ここでどうやら F が簡単そうとnakanoとkazumaが気づく.僕は問題を見た瞬間に拒絶反応が出たので逃亡.2人は得意そうだったのでFを任せて,それ以外で簡単そうな G を読む.H は実装がめんどくさそうなのでパス.

Gを読むと明らかにぐるっと大回りするしかなく,右手法でやれるやろというのはすぐに分かった.nakanoとkazumaに聞いてみると,意見が一致していたので,Fが終わり次第やるかという感じに.

すると F がバグっていてつらそうだったので,デバッグをnakanoにまかせてとりあえず G をkazumaと2人で取り組むことに.
適当にDFSを書いて投げるとTLEしてしまい(実装力のNASA),どうしようかなぁと考えていると,対角線でそれぞれ流量2のフローを流せばいけるんではという神 (nakano) のお告げが.
ちょっと正当性を考えてみたが,正しそうだったため,フローと入力とる部分だけ実装して,辺を張る部分は nakano に書いてもらった.するとサンプルが通る.天才か?と思いつつ投げると AC (2:40:24).

ここで順位表を見ると,20位の目標は達成できそうで大喜び.あまり時間もないので,だいたい出来てる F のデバッグをすることに.
とはいえ,僕は拒絶反応が出てるわ,コードがビット演算で大変なことになってるわで,僕の手には負えなかったので後ろから念を送ったり地蔵になったりした.

結局バグが取れず終了.

コンテスト終了後

順位表を見ると京大からDragonチームが3チーム予選通過していて,一安心しました.他のチームの話を聞いてみると先輩たちがかなり不調でつらそうでした.

実験室を出た後はモツ鍋を食べた.美味しかった.

感想

チームとしては機能したほうだと思う.練習の成果があってよかった.
来年は 6 ~ 7 完ぐらいしたいなぁ.
結構チームメイトに頼ってたので,次は自分も貢献したい.
あとデバッグは大切.慢心はダメ.誤読対策もしつこいぐらいがちょうど良かった.そんなにロスにならないし.