C-merのブログ

ザ・雑記

大学4年間競技プログラムを続けると水色(AtCoder)になれたよって話

これはC-merが4月にやろうと思いたった1人アドベントカレンダーの1日目です。もし続かなかったらエイプリルフールだったということで嘘だったということにします。 1日目と言いつつもう4月2日じゃんというツッコミは承ります。 入水してから期間空きすぎというクレームは受け付けません。

そして、「大学4年間」と言っておきながら、ちょうど今日から大学生ではなくなってたりします。細かいことは気にしないようにしてください。

自分は特に競プロのプロではないので、この記事はライト競プロerに向けたものになると思います。

ここまでの道のり

変色ブログ定番のレート更新模様はこんな感じです。

f:id:C-mer:20200402022033p:plain

えー、見ていただくと分かる通り、入水してから一度もコンテスト出てません。。

非常に悪い例なので、真似しないようにしてください。

ちなみに大学入学は2016年で入学直後に友人の誘いで競技プログラミングを始めたので、このグラフよりも前からコンテストには出ています。

なぜこうなっちゃったのかはわからないですが、アカウントを作り直した記憶があります。よくわからなくなったからアカウントを作り直したので当然でしょうか(?)

最初はICPCを目標にやっていて地味に4年間で続けました。有志の勉強会も基本大学周りの人との関わりでしたが、そこそこの数参加しました。そこでAOJはもちろんtopcoderを使ったり。codeforceにも出ましたが、初めて出た回がunratedで萎えてからは出てません。

やってきたこと・やってこなかったこと

競プロができるようになるためのアレコレは、他の人のブログを参照してください。 自分がどんなに頑張って絞り出しても他のブログの部分集合になってしますので。

4年間でゆっくり競プロをやっていると後から始めた人に抜かされたり、追いつかれたりしますが、ー とは言っても自分のレートはそこまで低いというわけではないので抜かされるということは案外少なかったように感じます ー 空いた口が塞がらないタイプの天才は置いておいて、彼らは確実に自分と同等かそれ以上の数の問題を解いてます。

要は、レートをあげるにおいて問題演習数こそが正義というのは紛れもない事実だと思います。

レートを上げるための方法

「レート上げるためだけに競プロをやるというのはおかしい!」というのは自分も正しいと思いますが、

自分のレートを最大化するのだって立派なアルゴリズムではないでしょうか(?)

パフォーマンスを安定化する方法

これは苦手問題を作らないということになると思います。自分はAtCoder Problemsで自分が最低限取りたいパフォーマンスのdifficultyを意地でも解くということをやってました。何解けばわからない人もこれで安心ですね。

あと、早解きの練習

ライブラリの用意も重要だと思います。これで早解きできたり、ライブラリがあれば簡単だった問題が、レートの分け目みたいなことは往々にしてあります。

(abcが4問の時代は3問早解きor全完で水パフォが出てたので楽しかった記憶がある。問題の難易度も人口も違うので一概には比べられないが)

爆死しない方法

これは本質情報ですが、競技プログラミングとは爆死を避ける競技です。(とはいえ、AtCoderは爆死に優しい会社です)

といっても、やることは基本的に前項と同じですが、、

まず、日本語(あるいは任意の自然言語)を読解することだと思います。これに関しては、アドバイスはありません。小学生時代の自分を恨みましょう。

あとは、データ構造に対する理解を深めることだと思います。 多くの爆死は"アルゴリズムそのもの"と離れた部分に原因があると思います。読解ミスもそうですが、データ構造の使用上、計算値が想定していたものと異なることが多くの爆死を生んでいると思います(少なくとも自分はそうでした)。 具体的には、浮動小数の精度やオーバーフローですが、こうゆう初歩的な爆死ほどダメージがでかいです。


競技プログラミング力を上げるのに競プロだけをする必要もないと思います。数学とか研究とかインターンとか他の開発とかCTFとか色々な部分で論理的に考える力を鍛えればそれは結構簡単に競プロに還元できると思います。知らんけど。

水色になった感想

客観的に見て、成長速度はかなり遅い方だと思います(自分的にはもっと前から水色の実力はある自信がありましたが、それこそ主観的なものです。レーティングこそ正義なのです)。自分に競プロ的な才能があるとしたら、なんだかんだで競プロを続けたという部分だと思います。自分を見て時間かければ水色ぐらいにはなれると自信を持って欲しいです。

ここまで来たというと大袈裟ですが、友人たちと楽しく競プロできる日々に感謝します。

(このブログはどの立場の人がどのような立場の人に向けて発信しているのかがよくわかりません。)

明日から、競技longest steak始めようかな〜〜