ICPCのまとめ的ななにか

終わって2ヶ月近くたつのですか・・・

アメリカにいる間に書こうと思ってたのですが

なかなかまとまらず、日本に帰ってきたら案の定書きませんでしたので

一念発起して書いてみます

さて、大会の感想っていっても難しかったとかしかないのですが

今回の大会はほんと綺麗に順位がつくセットだったなぁ…という感じに思いました。

5問以下は普通のチーム、6問は解ける問題を確実に解いたチーム、7問以上はメダル

感想終わり

はい、これだけで終わりではいろいろアレなので、過去のことも含めてまとめ的なものを書いてみます

なんか4年ほどこれに参加してた気がするのですが

問題のアルゴリズム思いつくことって大切だよね?ということよりも

バグを出さないことって大事だねということの方が重要ではないかという事を思い知った4年だった気がします

いや、もちろん、練習に練習を重ねて、アルゴリズム力をつけることはとても重要なんですが

ICPCにおいて出る問題は、確実に他のコンテストに比べて実装量が多い

アルゴリズムが分かってても解けないことが圧倒的に多いコンテストだと思うのですよ

基本的にICPCの順位は、知っているアルゴリズム力、実装力に応じて、問題数という形でつきます

けど、それが狂う要因があって、それが、バグ

ここで言うバグとは、コーナーケースを含めた様々な要因がありますが

アルゴリズムの根本レベルでは間違ってなくてもWAが出るような場合です

誤解を恐れず過激に言うと、一度バグを出したら、それをACに持っていけるかどうかなんて運だと思うのです

だって、間違いだと分かって投げるやつはいないのだから、投げた解は正しいと思っている

だけど、それが間違っていると言われたなら、あとはトライ&エラーを繰り返すしかない

ここで、競技時間が「わずか」5時間しかないことを考えると、充分にトライ&エラーを繰り返すことは

おそらく不可能でしょう

しかも、ICPCは1WAにつき20分という途方もない重さのペナルティがつくので

WAを量産しすぎると、今度は、タイム差で逆転される

ここで、絶対に分かっておかなくてはいけないのは

現実問題として、大会本番で全ての問題を一発ACできるチームなんて、恐らくありません

だから、バグを出さないようにできるだけ振る舞うのと同時に、いざバグを出した時にどう対処するかが

とても重要な大会であると思いました

うちのチームの場合だと、どんなにアルゴリズムが分かってる問題でも

一人で書いていることは少なかったように感じます

一人で書いたとしても提出する前に、もう一人誰かに、コードを全て説明して、納得がいったら投げる

としていました、今思うと、すごくよく回っていたシステムだと思います

特に、コードを口で細かく説明するのはとても良いです

変数の意味もきちんと意識するようになるので細かいバグが結構とれたりします

競技プログラミングで、バグについて、くどくど言う文章がないようなちょっと書いてみました

なんか、書いてて思う、この文章、偉そうなこと言うなって多方面から怒られないだろうか…

まぁいいや

一応言っておくと、UT内の争いのような、日本の超トップクラス間の争いで

こんな悠長なこと言えるのかは、知りません

それから、やっぱりもちろんアルゴリズム力が競技の基本なので、皆一緒に頑張って修行しましょう

とにもかくにも、4年間のまとめは、バグ出さないって大事だねってことでした、まる

ああ、それから最後にこれだけは言っておかないと

チームメイトの二人へ、見ているか知りませんが(超高確率で見ないでしょう)

WFの帰りにも言いましたが、楽しい4年でした

ほんとに楽しかったよ?

競技中(競技中以外でも多分)に俺にキレたくなるような場面は多々あったと思いますが

皆さんがぐっと我慢してくれたおかげで、楽しく終わることができました

僕がチームに大きく貢献できたのかについてはとても自信がありませんが

微量くらいは貢献できたと信じています

横でコードを見ているのは、とても勉強になりました

本当にありがとう

おわり