ICPC2010 アジア地区予選東京大会

2週間くらい前にICPCアジア地区予選東京大会に参加してきました。
結果はA,B,D,E,F,Gを解いて9位でした。私が担当した問題はB,G,Hです。
BではDiv1のEasy程度の簡単なDPの問題のはずなのに解くのに非常に時間をかけてしまい、しかも3WAも出してしまいました。
Gでは拡張ダイクストラをすればいいことには10分程度で気づきましたが、非常にしょうもないバグ(初期化忘れ、上限のチェック忘れ)を入れてデバッグに手間取りました。
Hではアルゴリズム的には一応合っていましたが重い実装(アルゴリズム)を選んでしまったせいで、バグが出まくって時間内にはデバッグできませんでした。

敗因*1はB問題で詰まりすぎたって言うのが一番ですが、それにいたった根本的な理由という物を書いていきたいと思います。

チームとしてうまく活動してなかった

うちのチームはir5君と私がコーダでnojma君がデバッガという体制ですが、一人で問題を解きだして、他の二人が問題も知らないのにACかWAを貰うと言うことをよくやっていました。端的に言うと私とir5君の二人が完全に別行動していました。今回それがWAを貰う方向に大きく働き、合計11回WAを食らってしまいました。
しかし、チームでうまく活動していれば、つまり簡単な問題でも二、三人でアルゴリズムや実装をチェックしていれば、コーナーケースや実装の抜けに気づけたはずです。よくよく考えると、今までのコンテストでもチームとして一見うまく行ってる様に見えても、もっとうまく立ち回れたなあという気がします。
結論としてはチーム練習が全然足りなかった。ここがd3sxpや40010に負けた主要因だと思います。

実力が足りなかった

問題をもっと解いていれば、DとHは何も考えずに解けるはず。

運が悪かった

現在のチームの運用体制・実力でも運が良ければ勝てる可能性はあったはずだけど、これを言っても仕方が無い。

*1:この記事中での勝利・敗北の境目は世界大会に行けるかどうかのライン