#はじめに#
こんにちは。Qiita初記事のSotaUNです。先日、ABC179で入水しました。
ABC178で初めて青パフォを出し、+93した後、ABC179で初黄パフォを出し、+150しました。
Atcoderを始めてから (というかプログラミングを始めてから)10ヶ月弱の道のりだったので、単純に嬉しいです(^_^)。(ただ、これからパフォが安定するか心配...)
#茶色になるまで#
ここは、灰色や茶色を解くだけでも得られることが多いので、1日1問ずつとかを着実に解いて、新しい知識を吸収していけば、自ずと伸びてくるはずです。
私の場合、1ヶ月少しで入茶したのですが、問題を解くのをサボっていたら灰落ちしました。コンテストで焦ってペナを連発することもあったので、気分が良くない時はお休みしましょう☕️。気を取り直して問題を解き進めたら、また茶色に戻ることができました。
#緑色になるまで#
入緑したのはAtcoderを始めてから半年後くらいです。c++の基礎文法を勉強し始めて、割とすぐに茶色にはなったのですが、それからレートが伸び悩み、"精進"というものを始めました。
私は、自分の色より1,2色上の問題を解き進めるという方法をとりました。2色上の水色の問題は、解説を見ないと解けなかったのですが、それでも数をある程度こなしていくと、自力で解けるようになっていきました。
灰色,茶色とかの問題は、暇なときに埋めれば良いので、まとめて何問も解くというようなことはしていませんでした。
私の場合、ABC164(緑になる2回前)にはコンテスト中に水色が解けるようになりました。
このくらいの時は、まだ本格的なアルゴリズムの勉強はしていなくて、
- BFS
- DFS
- 逆元,繰り返し二乗法
- bit全探索
- 基本的なDP
- 累積和
ぐらいしか知らなかったと思います。最初は難しいですが、とにかくコツコツやるのが大切です。
あとは、問題を解くごとに新しいSTLの機能がどんどん出てくるので、その都度覚えていきました。
また、これらのアルゴリズムの実装やSTLの機能はメモ書きとしてGoogle Keepに残しています。
Google Keepは使いやすくはないのですが、自分のライブラリをどこに保存しようかという時に、手っ取り早かったので、使い始めました。
#水色になるまで#
入水したのは緑になってから5ヶ月後くらいです。
まず、レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】は絶対に読むべきです。ここにほぼ全てのことが書いてあります。大変お世話になりました。
私は、緑までに覚えていたアルゴリズムに加えて、
- 二分探索
- いろんなDP
- ダイクストラ
- ワーシャルフロイド
- クラスカル
- Union-Find
を覚えました。
最初はこの量のアルゴリズムを見ておげ!となったのですが、3日に1つとか頑張ってやっていくといつの間にか全部できるようになります。
###グラフ系###
私は結構実装でつまずきました。c++の知識がそもそも少ないのが原因だと思いますが、他の人のソースを半写ししたりして実装しました。自分で書いたソースコードのチェックは、AOJに基本問題が大抵載っているので、そこで行えます。
最近のABCでグラフ系のアルゴリズムを使う機会は少ないと思っているのですが、出たら考察は少なめなので、覚えておくと得します。また、JOIの過去問には最短経路問題とかが結構あるので、練習になります。参考までに、自分が参考にしたサイトを載せておきます。
###数学系###
水色くらいまでの数学系は、基本高校数学で完結するので、覚えておくことは少ないはずです。
私は、○進ハイスクールで勉強しました。
例えば、組み合わせの考え方などはパターンが決まっているので、二項係数の実装と繰り返し二乗法の実装を覚えた後は、困ることはなくなりました(困ってないはず)。
- LCM,GCD
- 組み合わせ
- 確率
- mod
- 幾何系の基本定理(余弦定理など)
###実装系###
実装系といっても80行くらいで収まるものが水diff以下の問題には多いと思いますが、
- BFS:queueの扱い方
- 二分探索:イテレータの扱い方
- 再帰:頭が混乱
- dp:遷移式が多い時
などは最初の頃はとても苦労しました。
これらは慣れるしかないと思うので、面倒くさがらずに頑張りましょう(自分自身への戒め)。
dpを使う問題はJOIに結構あるので、是非解いてみてください。
#さいごに#
ここまで読んでくださった方、ありがとうございます。少しでも役に立っていればうれしいです。
最後に、1日最低1問解くことが大切です。時間がある時は水diff以上とか、時間がない時は茶diffとか、とにかく1日1問といてください!!!
AtCoder Problemsのuser pageには連続何ACしているかのカウントがあり、モチベになります。まとまった時間がある時には、バーチャルコンテストをAtcoder Problemsで開いたり、Atcoderの過去のコンテストでバーチャル参加をするのもおすすめです。
次は、青色になるまでをかけるように、頑張ります!