Google Code Jam Qualification Roundに参加してみた

f:id:peroon:20170409121111p:plain

今回のコンテストのURL https://code.google.com/codejam/contest/3264486/dashboard#s=p0

50/100点だった。A, Bは解けて、C問題はデータサイズが大きいものでTime Limit Error. これは解法が思いつきそうな気がするが、入力データを落としてから8分以内に正解できなかったので閉じられてしまった。問題によっては挑戦回数が1回のものがあるので、そのときは計算量のOrderをクリアしていて、自分で作ったテストケースも通る、自信のある解法ができてから提出するといい。

25000人くらいが参加して、7687位。25点取ればこのラウンドは通るようで、難しいD問題は解かないで去った人も多いようだ。私はDをそもそも解けなかった。1000位以内に入るには65点取る必要があって、Cの最後の問題を解ければそこには行けた。50点だとは5500〜9000位になる。100点だと450位くらいになれるし、早い時間から参加していれば二桁の順位も可能。まずはC問題を最後までしっかり解けることを目指したい。いろんな国から参加しているが、上位を見てみると、アメリカ、中国、韓国が多く、納得感がある。

提出方法については、入力ファイルが与えられて出力ファイルを提出する形式で、コードを送って向こうで実行する形式ではなく、提出データの形式チェックと、正解チェックのみ行っている。手元で実行できるので、様々な入力で通ることを確認してから提出することができ、「なんで通らないんだろう?どんな入力で落ちてるんだろう?」と予測する必要がないのが良い。逆に言えば、サーバ側でコードを実行して、テスト時の入力と出力は公開されていないコンテストは、自分で様々な入出力のケースを考えられるようにしましょうということだろう。それができるようになれば、今回のGCJで感じた、手元でしっかりテストされた自信のある提出がどこでもできるようになるだろう。

1週間後に Online Round 1: Sub-Round A があるので参加する。Onlineで6回の選抜があり、Onsiteで最後の決勝が行われるようだ。今回の復習や、過去問のチェックをしておきたい。