はじめに
AtCoderでレーティングが茶色になるまでにしたことなどを中心に書きます。
目次
0. 自己紹介
1. AtCoderを始める前と現時点での成績
2. 初めてのコンテストまでにしたこと
3. 入茶までにしたこと
4. しなかったこと
0. 自己紹介
- 現在(6. 2024)大学3年生
- 国立大学の情報系&電気電子系の学科所属
- 数学はあまり得意でない
1. AtCoderを始める前と現時点での成績
始める前
私がAtCoderを始めたのが大学2年生の春休み(3. 2024)で、その時点でのプログラミング能力については次のような状態でした。
- C, Python, Javaを大学の講義で学習
- Unityに触れた際C#を少し学んだ
- BFSやDFS、ソートアルゴリズムは実装経験あり
- その他の一部のアルゴリズムは知識として知っているだけ
情報系の学生としては最低限のことしかやっていないぐらいだと思います。
現在のAtCoderの成績
2024年3月からAtCoderを始め、2024年5月に入茶しました。現在までの成績は次の通りです。
入茶から2か月弱経ってしまいましたが、思い出しながら書いていきます。
2. 初めてのコンテストまでにしたこと
まずは使用する言語を選びました。私は実行速度の速いC++でやることに決めました。C++に決めたのにはPythonの文法が個人的に好みではないという理由もありました。C++の基本を学ぶために、APG4bを1週間かけて最初から最後まで学習しました。プログラミングが初めてな方は、3章以降を後回しにしてコンテストに参加してみるというのもありだと思います。あとは手元のPCで自分の選んだ言語の環境を構築しておくとよいです。バグなどにぶつかった際に、デバッグを手元のPCで行えると実装スピード的に有利なためです。C++であったら、WSLとVSCodeを使っておけば問題ないと思います。
3. 入茶までにしたこと
私個人の感覚ですが、入茶するためにはA, B問題は確実に、C問題は6割程の正答率で解く必要があります。このような状態になるまでに次のようなことをしました。
解きなおしをする
当たり前のことですが解けなかった問題を解きなおしました。復習をすることで新たなテクニックやアルゴリズム、データ構造(しゃくとり法、Union-Findなど)を知ることができました。この段階ではD問題以上の復習をする必要はないと思います。D問題以上を解けることよりも、C問題までを確実に解くことが大切なため、C問題までを解答できるようになることを優先しました。解きなおしをするときに、AtCoder Problemsで問題の難易度から問題を選ぶこともありました。
ABCの過去問を解く
ABCの過去問を解きました、ただ解くのではなく、バーチャル参加を使い、時間を計って解きました。コンテストでは解くのが速いほどパフォーマンスも大きく上昇するため、時間を意識して問題を解かざるを得ません。過去問演習でも時間を計りながら解くことで本番のコンテストの練習にもなります。
全探索をできるようになる
C問題には全てではありませんが、全探索をすることで解ける問題が多くあります。全探索は正しく実装できさえすれば確実に点をとることができるため、全探索ができることのメリットは非常に大きいです。問題を解く際、まずは全探索で解けるか考えてみることをお勧めします。
計算量を意識する
C問題には時々全探索を用いると実行時間制限超過(TLE)になってしまう問題があります。アルゴリズムを実装する前に、そのアルゴリズムの最悪計算量を計算するようにしました。実行時間制限が2.0secの場合、計算量の限界はおおよそ$10^8$から$10^9$までであると思います。
4. しなかったこと
逆にしなかったことについても簡単に書きます。
- 蟻本を買う
灰色の段階では必要なかったです。 - D問題以上の復習
解説を見ても分からなかったことが多かったので、後回しにしました。比較的簡単なD問題なら解いてもいいと思います。 - 動的計画法(DP)の問題を解く
茶色になるのにDPが解ける必要はないです。緑を目指すなら必要かもしれません。
おわりに
人によっては茶色になるのには時間がかかるかもしれませんが、初めてレーティングに色がつくだけでも自信がつきますし、大きな喜びを得られるので頑張ってください。私も頑張ります。