CODE FESTIVAL 2016 Final 参加記録
日本最大のオンサイトプログラミングコンテスト、CODE FESTIVALに参加した。プログラミングコンテストと言うが、実際にはアルゴリズムコンテストという感じ。僕はドイツ留学中に、このコンテストの予選を突破した。
http://intelhamko.hatenablog.com/entry/2016/09/26/111113
このコンテストは、大学生・大学院生・未就業者を220人(!)集めて開催される。人数が多いので、予選突破が容易である。むしろ普通の人間がこれ以外でオンサイトに参加するのは困難だと思う。220人のアルゴリズムのスペシャリスト(主にTwitterなどでよく見かける人)と話す機会であった。実際に僕はTwitterのみで知り合いだった、多くの優秀なプログラマと会話できた。
コンテストは主に3つあった。(1) 本戦。10問3時間。1600点以上でパーカーがもらえる。 20位以上で賞金がもらえる。 (2) トーナメント。本戦の近い順位の人で戦い、勝ち残る。2問30分。突破ごとにステッカーがもらえる。(3) チーム戦。11人チームで、11問の問題を90分で解く。チーム対抗で戦う。パソコンはチームで1台。1人1問しか実装してはならない。
全コンテストを通じて、結果は散々だった。自分のアルゴリズム力もプログラミング実装力も全然ないことを自覚した。コンテスト中、ずっと帰りたかったレベル。
本戦では、1500点でパーカーがもらえず、136位/220人だった。10問はAからIまで番号が付いている。A-Dまではミスがなく、66分くらいでそれなりにすんなり解けた。ここまでで1500点だった。パーカーゲットには、Eの部分点かFかHの部分点を解く必要があった。Eが、点数も低く簡単そうだったので、2時間くらい取り組んだが、全く解けなかった。Eの部分点は明らかに凸凹していそうだったので、絶対DPだろうと思いながらも、思いつかなかったので嘘貪欲を書いて死んだ。
解けた問題は以下。A問題は、全探索+文字列比較。B問題は、までの値で必ず構成できるので逆から自明に貪欲。C問題は、対応逆にしてUnionFind。D問題は、mod Mの世界でカウントして、偶数個あるものはなるべく残したいので、奇数個の数字を優先に消化していく貪欲。
http://cf16-final.contest.atcoder.jp/submissions/991410
http://cf16-final.contest.atcoder.jp/submissions/991690
http://cf16-final.contest.atcoder.jp/submissions/991995
http://cf16-final.contest.atcoder.jp/submissions/993120
トーナメント戦では、0点で1回戦敗退だった。2問はAからIまで番号が付いており、部分点が多く設定されていた。初め、400点くらいが突破ボーダーかな、と思っていたが、ボーダーは100点(0点でなければ良い)だった。本番で、僕はA問題はグラフで筋肉が必要そうだったので、簡単そうな桁DPっぽいB問題にとりかかった。これはDPが自明だったので、実装しようとした。しかし、バグって実装が終わらず0点となったしまった。しかもバグの原因が本当に大馬鹿で、(string)"123">(string)"24"だと思い込んでいたせいだった。コンテスト後20分くらいデバッグして、B問題の制約のみACさせた。dp(i, j, h) = s[0:i)にちょうどj回カンマを挿入して、最後にh文字カンマが入っていない時の最大値の最小。
http://cf16-tournament-round1group21.contest.atcoder.jp/submissions/997228
チームリレーでは、E問題を2分で一発ACさせた。時間節約という意味で貢献できたと思う。終わったあと、I問題をマヨ子さんと一緒に考えていたけれど、頂点4個の時のOKケースを1例挙げた程度の貢献しかできなかった。
http://cf16-relay06.contest.atcoder.jp/submissions/999117
その他の活動では、touristへの質問ライブ、コード川柳、書道コーディングをした。touristの質問ライブでは、12問中5問僕の質問が採用されてなんとなくうれしかった。 書道コーディングは以下。0完太陽はお気に入りです。