ACM-ICPC 2018 国内予選 参加記

はじめに

7/6 に行われた ACM-ICPC 2018 国内予選の参加記です.
忘れないうちに書こうと思います.
今年は大雨で関西勢は大変でしたね.自分の大学もリモート参加推奨,という形になってしまいかなりバタバタしていました.

結果

チーム Zerokan_Sunshine として kazuma, nakano と一緒に参加しました.
結果はABCDEFの6問を通して全体6位,学内1位でした.
僕はA, C, Fを書きました.実装担当なのに楽なのしか書いてなくない?実装担当やめてね.

コンテスト中の流れ

  • A 読むとさすがにはいなので書きます (3:47 AC)
  • kazuma が B を書き始める.
  • その間に C を読んで考察,Cでミスると最悪なので一応 nakano に相談して確認しまくる.
  • B がバグっていた(?)ので時々交代して C を書く.
  • B を投げると WA だったらしい.というかサンプルが合っていなかったらしい.面白い(いいえ)
  • kazuma が直して B が通る (27:09 AC)
  • ついでに僕が C を通す (31:27 AC)
  • D はなんかやるだけっぽく,普段なら僕が書いてそうだけどFがやりたかったので kazuma に丸投げした.
  • 若干E聞いたけど嫌いなので(は?)nakano にまかせて F に集中することにした.
  • F で最初に自分が書いていたのは嘘なので nakano に修正してもらって,詰めてからこれなら解けるな,となった.O(n^2lognlogM) なのでどうかなあみたいな感じだった.M は三角形の長さの最大値.
  • kazuma の D と並列して F を書きはじめる.
  • D が通る.はいプロ.(1:13:10 AC)
  • nakano が E を大体紙コーディングしていた(神か?)ので kazuma にやってもらう.
  • E と F を並列で頑張る.どっちも結構バグっていてつらい.
  • E が先に通る.さすがプロ.(1:54:58 AC)
  • F もなんかバグは治ったけどさすがに遅い.
  • 一旦実行止めて定数倍改善してから,とりあえず裏で走らせておく戦略をとる(途中でオーダー落とせたら書き直す感じで).
  • まあ思いつかなかったよね.そうこうしているうちに通ってしまった.(2:45:02 AC)
  • ちなみに実行に10分ぐらいかかりました(最悪)
  • この時点で6位だった.まじか.予想順位より10位ぐらい高いなあ,という話をメンバーとした.
  • 15分でGを書くのは厳しいので,感想戦をして適当に過ごす.
  • コンテスト終了,結局順位は変わらなかった.

[追記]
そういえば今年はかなり特殊な実施状況だったので勘違いされないように注意しておくと,「並列して書く」というのはもちろん複数台使うという意味ではなく,1台のPCで時々交代しながら,という意味です.

感想

今年は京大勢が奮闘していたようです.その中で学内1位を取れたのはかなり嬉しかった.
正直AtCoderが苦手すぎてICPCに逃げているみたいなところがあったので,ちゃんと結果に現れててよかった.
F はなんかズルしたみたいな気持ちになるのが心残りです.ルール的にはもちろん問題ないんですけどねえ.O(nlognlogM) とかで解かせたいのかな,と思っていたんですが n がどうしても落ちなくて辛かった.ひょっとすると (n^2 logM) で適当に定数倍改善すれば十分早かったのかな.
G は明らかに僕担当だったんですけど時間的に厳しかったなあ.あと30分ぐらいあれば書いていそう.
アジアではもっと貢献できるように頑張りたいと思います.

ところで,11位で予選通過できなかった同期のチームがあるのはかなり残念ですね…(東大勢はもっと激しいと考えると恐ろしいな…

謝辞

この大雨の中,運営とのやり取りなどを行ってくださった先生やコーチの方々,そして僕を大学まで平常通り送り届けてくれた近鉄と京阪に感謝の意を表し,終わりの言葉とさせていただきます.