NO ENGINEER NO CRY

泣かないエンジニアはいない

ICPC2019 模擬国内予選 参加記

私、えうだーなくん、はりぼてさんの3名でICPCの模擬国内予選に参加してきました。

ICPCとは?

これを見て(丸投げ)。
icpc.iisf.or.jp

ACM*1というえらいところが開催する大学対抗戦のプログラミングコンテストです。
スポンサーとしてIBMがついているほか、Googleを初めとした数々の有名企業が協賛しており、競技プログラミングの大会では最も知名度が高いものの1つなのではと思います。
学年ではなく出生年で制限がかかっており、今年は1996年以降生まれの人間のみ参加できます。

参加に至るまでの経緯

まだ本番ではなく模擬なのですが。
そもそも私は競プロを真面目に始めてから4か月程度です。
NAIST*2に入学するまでは正直ICPCのこともよく知りませんでした。
入学後に競プロのサークルに入り、そういう世界があることを知り、出てみたいなあと思うようになりました。

チーム決め

サークルメンバーは初めは少なかったのですが次第に増えていった上、自由参加な分集まりもまちまちでチーム決めにも四苦八苦していました。
出席率などのこともあり、最終的には最初に考えていたチーム(つまり初期メンバー)で行くことになりました。
もう1つのチームのうち2人は私が新歓のときに声をかけてサークルに入ってもらった人たちだったので、人数揃わないとなんか申し訳ないなと思いつつ、無事チームが組めていて良かったです。
ということで本学からは今年は2チーム出場ということになりました。
因みにチーム名は初め私の名前になりそうだったらしいのですが、なぜか最終的に本学出身の先輩*3の名前を勝手に借りることになりました。

本番

問題割り当ては
A:私
B:はりぼてさん
C:えうだーなくん
D:みんなで詰める

という感じでいくことになりました。
始まってとりあえずAの問題を見る→ICPCにしては実装が軽そうだったのでそのまま実装。
Mac使ったことのないザコ&&他人の環境にあうあうしながらもoutputファイルを作成、投げたら通ったので1AC。
はりぼてさんがBの実装に取り掛かり、その間にDの問題文を読むことに。
途中でCの問題の出力の表を作ってほしいと頼まれ表作成に。
制約的にもなんとなく法則性がありそうじゃないかという話になり色々考察詰める。
Bの実装がバグっている間に「これ0含まれる場合だけ例外処理して、一般的にはパリティ取ってx+y,x+y-1するだけでは?」ってなる。
サンプル的にも正しそうだったけどまあ流石に通らんやろってなりながら実装して投げる。これが通って2AC。
そのあとすぐにBのデバッグが終了して3AC。
Dは編集距離っぽかったけど誰も編集距離のdpに明るくなくてDを詰めるかEを詰めるかで少し話し合ったのちEを詰めることに。
意外と解けそうだったけど考えてるうちに沼ってしまう。色々案は出たけど結局どれもダメそうでそのまま3完で終了。

結果

そこそこ速解き3完でした。
f:id:imln20:20190630224559p:plain

順位では66位、selected*4では44位で、かなりギリギリのラインでした。
これは模擬で本番はチーム数が倍くらいになることを考えると、やはり4完は確実にしておきたいといったところでした。Yazatenさんゴメンナサイ。
メンツ的に自分が足を引っ張っている感は否めないので頑張りたいです(あと2週間)。
あとチーム戦はなんだかんだ面白いと思うので、もっと早くにこういう世界を知っていれば良かった(クソポエム)。

最後に

コーチをしてくれたかがさん、チームを組んでくれた皆さん、ありがとうございました!
本戦も頑張りましょう

*1:Association for Computing Machinery。ニューヨークに本部のあるコンピュータ科学分野の国際学会。

*2:奈良先端科学技術大学院大学

*3:Yazatenさん

*4:選抜ルールに則った順位。今年は49チームが予選を通過できる。