記事の内容
- 筆者が競技プログラミングサイト AtCoder で緑色になる(入緑)までにやったことを紹介します
- 緑色の目安(レベル感)を述べます
- 緑色になるために必要なスキルを挙げます
プログラミング言語は C++ を想定していますが、異なる言語でも通用する内容です。
緑色の目安
まず、AtCoder で緑色になるための目安を示します。
以下の 2 点を継続的に達成しており、AtCoder Beginner Contest (ABC) にほぼ毎回参加していれば、初参加から半年ほどで緑色になるはずです。
- ABC において、A 問題から C 問題までを 20 分以内に AC できる
- ABC において、ときどき D 問題もしくは E 問題をコンテスト時間内に AC できる
- 5、6 回に 1 回くらいのペース
緑色になるために必要なスキル
AtCoder で緑色になるために必要なスキルのうち、優先度が高いもの挙げます。
これらをおおよそ理解しておけば、ほとんどの ABC において、A 問題から C 問題までを 20 分以内に AC できます。
プログラミング言語は C++ を想定していますが、異なる言語でも同様のライブラリやデータ構造があります。
プログラミング言語・データ構造など
- プログラミング言語の基本的な文法
- データ型 (
int
、long long int
、char
、string
、bool
) - 文字列の扱い方
-
vector
の使い方-
stack
としての使い方
-
- イテレータの扱い方
-
sort()
、min()
、max()
の使い方 -
pair
型の扱い方 -
set
(unordered_set
) の使い方 -
map
(unordered_map
) の使い方 -
queue
(priority_queue
) の使い方
アルゴリズム
- 計算量の見積もり
- 単純な全探索
- bit 全探索
- ビット演算
- 順列全探索
-
next_permutation
の使い方
-
- 二分探索
-
lower_bound
、upper_bound
の使い方
-
- 幅優先探索
-
queue
の使い方
-
- 深さ優先探索(再帰関数)
- 再帰関数
- メモ化再帰
- 累積和
- しゃくとり法
- ダイクストラ法
-
priority_queue
の使い方
-
ABC において、C 問題までは vector
、set
(unordered_set
)、map
(unordered_map
) などを上手く使うだけで解ける問題も多いので、データ構造やライブラリを知っておくことは重要です。知らなければ、そもそも解法を思いつけないこともあります。
bit 全探索、幅優先探索、ダイクストラ法など、最初は混乱するかもしれませんが、一度覚えてしまえば難しくないです。ある程度の量の問題を解けば、考えなくてもスラスラ書けるようになります。仕組み自体は難しくないので、慣れることが大事です。
緑色になるために知っておくとよいスキル
AtCoder で緑色になるために知っておくとよいスキルを挙げます。
知らないと緑色になれないとまでは言えませんが、以下に挙げたことの基本的な部分を知っていると楽です。
これらをおおよそ理解しておけば、ABC において、D 問題や E 問題を解けることが増えます。
- 中学・高校レベルの数学
- 場合の数など
-
tuple
型の扱い方 - Union-Find
- いもす法
- ワーシャルフロイド法
- クラスカル法
- $\text{mod}$ 関連
- べき乗、逆元
Union-Find は簡単で便利です。コードを見れば、何が起きているのか理解できますし、すぐに習得できます。
いもす法は発展的なパターンは難しいですが、基本的なパターンは習得できます。
ワーシャルフロイド法とクラスカル法はダイクストラ法などと同様に、最初は混乱するかもしれませんが、一度覚えてしまえば難しくないです。仕組み自体は難しくないので、慣れることが大事です。
$\text{mod}$ 関連は完全に理解はしていなくても、べき乗や逆元を求めるコードを準備しておくとよいです。
緑色になるために必ずしも知らなくてよいスキル
AtCoder で緑色になるために必ずしも知らなくてよいスキルを挙げます。
無論、緑色になったあとには必要になるので、知っているに越したことはですが、難しければ現時点では習得していなくても緑色になれるという意味です。
- 動的計画法
- コンテスト中にコピー&ペーストするための自作ライブラリ
- コードを省略するための記法
- AtCoder Library (ACL)
動的計画法は今後のために知っておくべきですが、仮に動的計画法を使う問題を 1 問も解けなかったとしても、緑色になれます。実際、筆者は緑色になるまでに、コンテスト中に一度も動的計画法を使う問題を解いていません。
動的計画法はさまざまなパターンがあり、難しいです。少しずつ習得するのがよいと思います。
コンテスト中にコピー&ペーストするための自作ライブラリやコードを省略するための記法は使わなくても緑色になれます。
AtCoder Library (ACL) は使わなくても緑色になれます。
緑色になるまでにやったこと
AtCoder で緑色になるまでに、筆者が実際にやったことを紹介します。
以下の記事に掲載されている記事をすべて読み、例示されている過去問をすべて解きました。
例示されている過去問は計 180 問ほどあります。
このほかには、特に何もしていません。