ICPC2018 国内予選 体験記

昨日(7/6(金))、ICPCの国内予選がありました。
忘れないうちに書いていこうと思います。

ICPCに参加するのは今回が初でした(初めてプログラミングコンテストに参加したのが今年の1月なため)。
問題形式・提出方法の違いや、チーム戦であるなど普段のコンテストとは異なるため、色々と不安がありました。

チームはICPC出場経験のあるM1の先輩と、B3の2人で構成されていました。
基本的にM1の先輩に解いてもらい、自分で書けそうだったり、バグを発見したりしたときに交代・助言するという戦略でいこうとなっていました。


当日
部屋にあるプリンタに何故か接続できないトラブルがあったりしましたが(違うプリンタに接続できました)、16:30にコンテストが始まりました。

Aは先輩がすぐに通してくれて、BとCの考察に移りました。見た感じBが重そうだったので、先輩と僕で考察し、Cをもう1人に考察してもらいました。

Bは紙を折るたびに配列を更新すればよさそうだと考え、実装しました。しかし、高さと幅が逆になってしまったり、サンプルの3つ目のように元々紙があった場所より外に折った紙がくる場合を考えていなく、配列外参照をしたりして、バグ取りに時間がかかってしまいました。一方、Cを考察していた人が解けそうだと言っていたので、先輩にBを解いてもらっている間に僕もCを見ました。ICPCは時間制限が普段のコンテストよりも厳しくないと聞いていたので、しゃくとり法だけで通せるのでは?と考え、紙コーディングしました。その間に、Bは大まかな方針は合っていたため、開始から約1時間半で通すことができました。

そしてすぐにCに取りかかりました。紙コーディングしたものを写すだけだったので、やや実行に時間はかかったものの、約10分でACできました。自分の書いたコードが通ったときはめちゃめちゃ嬉しかったです。

残り時間が1時間ちょっとだったので、最も解ける可能性のありそうなDに取りかかることにしました。DFSでいけそうだと思いましたが、僕はそこまで実装力がないので、ここもまた先輩頼りになりました…。枝刈りも用いましたが、DFSがうまくいかず、開始から3時間経過しコンテストが終了しました。

最終的にABCの3完だったので、自分の中では頑張ったほうなのでは思いながら順位表を見ると、同じ大学の4チーム中自分たちのチーム以外の3チームがABCDの4完で、とても悔しかったです(圧倒的に自分が精進不足なので当たり前なんですが)。
あと、反省点は、Bより先にCを解くべきだったということですね…。

最後に
ICPC対策として、AtCoder以外の問題(実装メイン)も解く
・蟻本を読んで正確にアルゴリズムを使えるようになる
などを意識しながら、来年は国内予選通過を狙えるくらい、精進しようと思いました。

また、色々とサポートしてくださったHCPCの皆様ありがとうございました!