はじめに
自分は2020-03-08(日)に開催された日立製作所プログラミングコンテストで丁度レート800になりました。
この記事を書こうと思ったきっかけは自分のように灰色や茶色で伸び悩んでコンテスト後に嘆いている人を良く見かけてその人達を励まそうと思ったからです、記事を読む上で中学生のスペックが気になると思うのでざっくり書くと自分は私立に通っていますが数学は公立の中学に毛が生えた程度で、公立と比べて違うところは授業を早く進めているだけなので、競プロで役に立ちそうな部分と言えばコンビネーションパーミュテーションの概念と典型的な問題を解く力位ですが、深くは理解していなかったのでそこまで競プロに役立つ学力は無かったと思います。
緑になるまでにしたこと
初参加から~5回目
自分は競プロとプログラミング学習(独学)を同時期に始めたので最初の方はA問題を30分近くかけて解くような感じでした。数回参加してからこれだけだと一生上がれないと思って過去問のA問題B問題を埋めました。ここまではよくある展開だと思いますが、自分は学校以外で数学をした事がなく数学の記号や数列の要素を表す数字等を理解するだけでも時間がかかってしまいこの頃はBを解くだけでも精いっぱいで今よりもTwitterで精進してる人を見かけていなかったのもあって、精進量は僅かでした。C問題は題意を読み取るのでいっぱいいっぱいで高速化する考えに行くまでに何時間もかかって結局解法が分からず苦しんでいました。
初参加から~10回目
この頃になるとプログラミングもAB埋めも日課になっていて大分出来るようになっていました、またABC138ではC問題まで解けたのでうれしかったのを覚えています、振り返るとAB埋めをしていく内に競プロの問題文を読む→題意を読みとる→コードを書くというステップにちょうど慣れてきていたと思うので精進は偉大だと思いました。恐らくこの頃からC埋めをしていましたが高速化が出来ずに解説ACをする事が多かったです。
初参加から~20回目
この頃はAB早解きで灰上位パフォかABCまで解けてギリ茶パフォという事が増えてきて成長を感じた時期です。この辺からC問題を時間をかけて解くという事が増えてきたので自分の頭が高速化になれてきていたんだと思います。この頃も特に変わった精進はせずに適当にABCを埋めていく感じでした、多分ここらへんで累積和やいもす法をやりましたがそれ以上の難しいアルゴリズムや動的計画法の問題を解くことはしませんでした。
初参加から~30回目
この辺になってくるとほとんどのABCでCを解けるようになり回によってはDまでを解けるようになりました。この時期に多分JOIがあったのでそれもあって沢山精進していました、直近5回のコンテストではすべて緑パフォを出せて気持ち良い形で緑になれたので良かったです。
まとめ
- 緑になるまでに覚えたアルゴリズムはいもす法と累積和と幅優先探索と深さ優先探索くらいなので茶色の内から難しいアルゴリズムやデータ構造に手を伸ばすのは好きなら良いですが精進として考えてるならば考察力を伸ばすためにCやDを埋めましょう。
- 精進は出来る限りやった方が良いですが楽しいのが一番なので無理に長い時間やらないようにした方が良いです。
- 解説ACをしても時間を置いてやったり、解説を見てから本番どうやってたらその思考にたどり着いたか等を考えると次のコンテストで生かされるので解説ACをして満足するのはやめましょう。
- 中学生で特に秀でた才能が無くてもAtCoder緑は可能です頑張りましょう!