水色コーダーになった話

今年の4月にコンテストに初参加して、ちょうど5ヶ月で水色になりました。正直速い方だと思いますが、当分青になれる気はしないのでまとめておこうと思います。



1.プログラミング歴

おととしまでは全くやっておらず、昨年研究室配属されてから若干pythonの勉強をしたものの、関数作れるかどうかのところでそのときは終わってました。

ところが研究でC++を書く必要が出てきたのでAPG4bを読む目的で登録したのが今年4月です。なのでほぼ初心者からと言って間違いありません。

2.灰~茶

前述のとおりC++の勉強が目的だったのですが、どうせなら出てみようということで初参加したのがABC123です、キリのよさそうな回ですね。
初回は2完、cは大量のif文で愚直に経時変化を求めようと頑張りました。

肝心のAPG4bは1週間で第一章を読み終わり、その後は気が向いたら読んでいくというスタイルになりました。

競プロが面白いなと思ったのが4回目のコンテストであるABC125でのこと。このときD(Flipping Signs)を先に解いてしまいC(GCD on blackboard)を相手に時間が足りないとうんうん唸ってたんですけど、GCDって取る順番関係ないから先頭からと末尾からのGCD計算しておけばいいよねということに気付いてAC。後でこの手法に名前がついてることを知り、そういう競プロならではの手法があることに面白さを感じました。
このときに同時に茶色になりました。

3.茶~緑

1月半くらい。unratedが二回ありました。divertaは成功してABCは失敗してたので差し引き0だと思います。
この辺り、とくに何かやった記憶もないなぁと思ってコンテスト見返したんですけど、pairが使えなくてAC2完したのがここでした。pairとtupleを使えるようになりました。
diverta2で緑になりました、このときに初500点ACをして、企業コン(というかARC相当)が一番相性がいいんじゃないかなと思い始めました。

4.緑~水

2月半くらい。途中ABCのパフォーマンスが1200に収束してたので色が変わるのに無限年かかるかと思ってました。
8月にインなんとかターンがあったので、それの自己紹介で水色コーダーです!と言いたいがために7、8月は頑張りました。(結局間に合わなかった)

今までコンテストは出て終わりだったんですけど、この期間から復習を始めました(遅くない?)。
自分が出来なかった問題も後でじっくり考えたら出来たり、1つ上の問題にも目を通すようになりました。
やってるチューターのバイトが暇なので、数学的な500~600点問題を持ち込んでバイト中に脳内コーディングをしてることもありました。

ABC139で水色になりました。このときはDとEの難易度差が大きく、4完時点で出遅れてしまったので駄目かなとも思ったんですが、Eを愚直にやったところTLEが1つだけだったので最大ケースだなと当たりをつけて処理を書いたら嘘ACしました。

5.おわりに

水色になったとはいえ、chokudaiさんの掲げるような水コーダーの要素はまだ持ってないかなぁと思います。累積和とか簡単なDPは書けるし計算量くらいはわかってきたけど、しゃくはとったことがないし木のあたりのアルゴリズムは全くわからない。
数学的な考察力で殴ってきたんだなぁということを強く感じますね。
あと解法が分かってるのにそれを実装できずに死んだという経験を学生プロコンDで味わったので、上に行くにはコーディング力がまだ足りない気がします。

正直ここから上に行く(努力をするかどうか)かどうかはわからないけど、競プロ自体はモチベーションの持つ限り続けると思います。



ちなみに、C++を勉強する当初の目的であった研究は5月に入った辺りで必要がなくなりました。