こんにちは。
競技プログラマーのriver0525です。
前回の記事「才能ゼロの私が半年で水コーダーへなるためにやったこと」が初投稿にもかかわらずトレンド入りを果たしました!
読んでいただいた皆さん、本当にありがとうございます。
それを記念して、本記事では凡人の私が約2年間競プロをやって分かった「競プロにおける才能の正体」についてお話ししたいと思います。
また、凡人が天才に勝つ方法についても触れるので、ぜひ最後までお付き合いください!
才能の正体
結論から申し上げますと、「競プロの才能がある」とは以下の3つの能力を少なくとも1つは持っている状態を指します。
- 解いた問題の解法をずっと覚えている、もしくはすぐに思い出す
- 非典型問題に対する考察力がある
- 競プロと他のことのバランスが取れる
順に解説していきます。
1. 解いた問題の解法をずっと覚えている、もしくはすぐに思い出す
ここでの解法とは単なるアルゴリズムのことではなく、そのアルゴリズムをどのように活用して結果どうなったかといった一連の流れのことを指します。
才能のある人はこの力がずば抜けています。
アルゴリズム名だけでなく、解き方の流れそのものを覚えているため、類題が出た際に爆速でACします。
そのため、凡人から見ると頭の回転が異常に速いように映ります。
2. 非典型問題に対する考察力がある
特にARCでは、競プロ歴の長いベテランが始めたばかりの灰・茶コーダーに負ける現象がちょくちょく起こります。
その原因は、この才能の有無に起因するかもしれません。
このタイプは競プロのみならず、受験の応用問題などにも強いことが多いです。
よって、非競プロerにも天才と呼ばれます。
東大などの難関大学にレッドコーダーが多いのも、これが理由の1つだと思います。
3. 競プロと他のことのバランスが取れる
競プロと他のことのバランスが取れるのも、才能がある人の特徴の1つです。
異常な量の精進をしても心や体を壊さず、学業や趣味との両立も平然とこなします。
挙句の果てには競プロで高いレートを保ったまま
- CTF
- プロコン
- ハッカソン
などの他の大会で入賞したりします。
凡人が天才に勝つ方法
ここまで読んでいただいて、「自分って才能ないのかも」と落ち込んでしまった方もいると思います。
ですが、ご安心ください。
前回の記事を読んでくだされば分かる通り、私も凡人です。
しかし、精進方法を工夫することで2回青パフォを出すことができました。
ここからは凡人が天才に勝つ方法を
- アルゴリズムの知識量で攻める
- コンテストに出まくる
- ライバルの解き方を参考にする
の3つ紹介します。
1. アルゴリズムの知識量で攻める
ARC的な考察で勝てないのなら、アルゴリズム知識で攻めてしまおうという発想です。
1回目の青パフォはこの方法でE問題を高速ACして出しました。
コツはとにかくいろいろな問題を解きまくること。
解いた問題の解法までは暗記できずとも、アルゴリズムの種類を覚えるくらいなら凡人でもできます。
解きまくって典型力を鍛え上げましょう。
ACLを使うだけの回などでは、緑コーダーでも青コーダーに勝てるチャンスがあります!
2. コンテストに出まくる
凡人ほどコンテストに出まくりましょう!
試行回数が増えれば増えるほど、良いパフォーマンスの出る可能性が高まります。
もちろん、ただ出るだけではダメで、いくつかポイントがあります。
- コンテストの合間にきちんと精進の時間をとる
- コンテストの日は長時間のゲームなど、脳の働きが鈍るようなことは避ける
- コンテスト中に自分の色+1までの人が解けていた問題は必ず解説を読んで理解する
才能はあるのに、コンテストに出ないがためにレートが上がっていない人をよく見かけます。
これさえこなしていれば、そういう人たちには必ず勝てます!
3.ライバルの解き方を参考にする
これは精進方法というより立ち回りの話です。
コンテスト中の問題の解く順番はライバルを参考にしましょう。
ここでのライバルは自分と同色~+2くらいが理想です。
AtCoderにはたまに難易度詐欺のような問題が出ます。
DがEより難しかったりするやつです。
コンテスト中に順位表でライバルの様子を見ることで、難易度詐欺が起こってないか判定する目安になります。
実際、私が入水した回ではこの方法でE問題より先にF問題を解くべきだと判断し、勝つことができました。
まとめ
凡人の私が約2年間競プロerを見てきて、「競プロの才能がある」人は以下の3つの能力を少なくともどれか1つは持っていました。
- 解いた問題の解法をずっと覚えている、もしくはすぐに思い出す
- 非典型問題に対する考察力がある
- 競プロと他のことのバランスが取れる
そんな天才たちに凡人が勝つ方法として、以下の3つを紹介しました。
- アルゴリズムの知識量で攻める
- コンテストに出まくる
- ライバルの解き方を参考にする
今回の記事が少しでも皆さんの精進の助けになれば幸いです。
それでは、またどこかでお会いしましょう!
