Codeforces Grandmaster になった

概要

これはいわゆる色変記事*1です。

先日の Codeforces Round 687 で Contest Rating が 2402 になり、Grandmaster (赤) になりました。来年4月には私の Codeforces アカウントが10周年を迎えるので、せっかくだから振り返りをします。

amylase - Codeforces 

2020年12月1日現在 Grandmaster の自分のアカウントです。これだけでも見てくれ!

自己紹介*2

2013年にあの東京大学理学部情報科学科を卒業しました。学科の同級生だけでも複数の赤経験者、Kaggle Grandmaster、ICPC 日本大会のジャッジがおり、競技プログラミングをやっていて赤タッチしたことがなかったのを少し引け目に感じていたくらいです。

現在は数年前に競技プログラマーを大量に吸収した例のI社でソフトウェアエンジニアをやっています。

実力向上に寄与したこと

過去問・バチャ

私見ですが、ある程度の実力(AtCoder R2000, Codeforces R2100 くらい?)がある人だと知識はだいたい揃っていて、勝敗を分けているのは見たことがある考察パターンの引き出しの数だと感じます。みなさん賢いのでだいたいの問題は十分に時間があれば解けるんですが、競技プログラミングで与えられる制限時間は2時間程度、1つの問題にかけられる時間だと30分程度とかなり短く、この制約をクリアするには類題を過去に見たことがある必要があります。

パターンをたくさん見てコンテスト本番で引き出せるように身につけるためには、やはり実際に問題を解くのが効率がよかったと感じます。パターンを引き出す練習にもなるので、限界効用はかなり逓減しにくいと思います。

昔に比べて練習環境はよくなっていると感じます。練習用の問題が圧倒的に多いこととそれによって適切な難易度が選びやすくなっていることは大きいです。TopCoder 全盛期に練習しようとして、使いにくい TopCoder Arena をなんとか開いて取り組むのが簡単すぎる Div. 1 Easy と難しすぎる Div. 1 Medium でモチベが切れてやめる、というのを何回かやった身としてはかなり練習しやすさを感じます。

強い人の練習量を見る

心が弱ってくると、「実は自分は天才なので何もしなくてもコンテストに出続けているだけで強くなれるのでは?」という邪念が湧いてきます。*3

ですが、例えば AtCoder 赤や Codeforces IGM の人の Twitter アカウントを見ると、こちらが心配になるくらい練習ばっかりしているのが分かります。どっちが正しいかは明らかですね?

昔は赤い人達は天才だから……みたいな信念が広がっていたように思いますが、近年は上位陣の練習量がきちんと可視化されたおかげで「邪念」に惑わされにくくなっているように感じ、これもよい変化だと思っています。

実力向上に寄与しなかったこと

労働

時間と体力が吸われます。最悪。

実は10月から3ヶ月間無給休暇を取ることができ、ここで生まれたリソースを練習に突っ込んで赤に届いたので、労働の有無とレーティングの向上には因果関係があることが証明されました。

今後について

今年いっぱいで休暇が終わってしまうので、労働を再開したら深夜の Codeforces に出るのは難しくなると思います。AtCoder は日本人に優しい時間にあるので続けるつもりです。橙はタッチしたことがあるので次にこういう記事を書くとしたら赤ですが、かなり遠いので次も10年掛かってしまうかもしれないですね。それでも続けることが一番効果的だと今なら思えるので、ゆっくりやっていこうと思っています。

 

*1:競技プログラミング界隈にはレーティングが一定の値を超えたときに自分語りブログ記事を書く慣習がある。

*2:色変記事には読者の参考のために筆者のバックグラウンドを書く慣習がある。

*3:始めたての人には正しいと思います。これがやっかいで、始めたての頃の成功体験を引きずってしまうんですね。