赤コーダーになった

やっと念願かなってTopCoder Algorithm部門で赤コーダーになれた。以前にも書いたようにこの部門が花形だという意識が自分の中にあったのでとても嬉しい。僕はICPC組やJOI組と違ってTopCoderから競技プログラミング始めた人間なので、レーティングの変遷を見ると色々思うところがある。いい機会なのでこの辺でちょっと振り返っておきたい。

開始3ヶ月くらい

そもそも初回にいきなりDiv 1に上がれたのが意外だった。一応過去問は何回かやっていたけど、当時はC++覚えたばっかりだったし、STLの使い方も殆どわからず動的計画法なんて名前すら知らなかった。開始3回で黄まで行っているけどあれは運がよかっただけ。
このとき黄コーダーになっていたから当時殆ど存在を知らなかったICPCにいもす先生とhasi君に誘えてもらえたので、やはり自分は運がよかったのだと思う。

開始3ヶ月~開始1年6ヶ月

この間にPOJとかAOJとかの問題を結構解いたり蟻本読んだりして、解ける問題の範囲は間違いなく広くなっていた。しかしレーティングは依然青と黄を行ったり来たりだった。伸び悩んでいた最大の理由は、easyの取りこぼしが多かったからだと断言できる。この時期はmediumなんて自分には解けるわけがないと思っていて、自分にとってSRMとはいかにeasyを速くといてチャレンジを決めるかというゲームだった。一応mediumの問題に目は通していたけど、早くに見切りをつけてeasyのチャレンジケース考えたりしてることが多かった。easy解くときはとにかく早く解かなければ、と焦っていたしサンプル全部通ったら必ず提出する、みたいなノリだったので再提出率も高かった。チャレンジも無理気味なのが多かった。この時期はSRM的には暗黒期だったと言える。

開始1年6ヶ月~開始2年

JAGに入ったり、コンテスト準備したり、TCOに出場したりした。
JAGとかOUPCとかでコンテスト準備をやってジャッジ解用意したり入力作ったり問題作ったりしたけど、この作業は意外と実力向上に寄与したのではないかと思う。ただし問題考えるのが面白すぎて、Marathonとかへの興味は薄れていったように思う。
TCOは日本(及び世界)の超トップ層な神々と過ごせたのがよかった。彼らのすごさを間近で見せつけられて大いに刺激を受けた。
この辺りからmediumの過去問とかに取り組みはじめて、mediumへの意識が「どうせ解けねー」から「結構解けるじゃん」へと変化していった。実力の向上を実感できて嬉しかったし、実際本番のSRMでもちょこちょこ解けるようになってきた。easyも速度云々より確実に通すことを意識し始めてレーティングが黄中位で安定するようになった。SRMの目標も、レート云々よりとにかく2完することにした。

開始2年~現在

medium通る率がそこそこ安定(とはいえ5割程度)してきて、mediumが通せなかったときは悔しいと感じるようになった。
速度は全然なので爆発力はなくレーティングは1900前後をうろうろしていた。しかし、mediumへの苦手意識も払拭されてとにかく2完することばかりを意識するようにしていたのでレーティングは以前ほど意識しないようになった。
後、自前のwikiを立てて提出後のチェックリストを作った。これは正解率向上とかアレとかに大きく役立っている。
最後に赤への一押しとなったのは大量チャレンジによる得点ブーストだった。これは運による部分が結構大きいので、今のレーティングは過大な気がする。

今後の課題

hardとか基本的に開きすらしないし過去問も手をつけていないので、少なくとも練習でやっておく位はすべきかもしれない。しかし本番で手をつけるかどうかは難しい問題で、今でも自分のSRMの目標は2完なのでeasy, mediumを速めに解けても余った時間でチェックを入念に繰り返すだろうし、問題開くのはその後になるだろうから時間がとれる気がしない。
速度も欲しいのだけど、これを鍛える方法ってよく分からないし焦ってやるのって精神衛生上よくないのでどうしたものかなあとは思う。要するに、わりと行き詰まっている。

その他

昔の自分に助言できるとしたら、「easyは大事」と「場合分け減らしてシンプルに書け」と言ってやりたい。