初めに
2025-5-10に開催された AtCoder Beginner Contest 405(Promotion of AtCoder Career Design DAY)にてレート800となり、緑色になることができました。(すぐ茶色に落ちそうなどとは言ってはいけない)
なので、備忘録として、緑になるまでにやったことをまとめておこうかと思います。
後半では、私が競プロを始め、続けている理由について記述しています。興味ない方は飛ばしていただいても結構です。
目次
緑色になるまでの記録
①精進
当然ですが、精進をしました。
私は2023年の12月に競プロを始めたのですが、これを見るとわかる通り、私は精進が苦手ですし、遅いです。茶以上の問題のAC数は、本当に人に見せられたものではない…
そんな私が緑色になれたのは、間違いなくAtCoder NoviStepsのおかげです。
露骨な宣伝に見えるかもしれませんが、間違いなく私の精進の効率を格段に上げてくれています。
①-1 NoviStepsの3Q~1D埋め
AtCoder NoviStepsとは、AtCoderの問題を難易度別や、解法別に分類された問題集に対し、自分でAC記録をつけていくというけんちょん氏発のサービスです。(余談ですが、自分は鹿本で初めてアルゴリズムを学んだので、けんちょん氏には本当に頭が上がりません…)
問題は11Q~6Dまで存在し、おおよそ茶色を目指すまでには3Q~2Q、緑色を目指すなら1Qが解ければ十分な実力が付くと私は思います。
一つの難易度には大体200問ありますが、本当に全部解く必要はないと思います。演習は確かに大事です。事実私は演習量不足などであんまりコーディングが早くなかったり、考察のレベルも死ぬほど低いです。しかし、それ以上に新しい知識を得るほうが私は上達が早かったです。(何より知らないことを知るほうがただ演習するより楽しい!!)
個人的な目安としては、30~40問を目安に、次のレベルに進んでもいいと思います。少しでも不安になったりしたら、昔解説ACした問題を解いてみたり、新たに問題を解いています(3Qだけといている数が抜けて多いのはそういう理由です)。
次に水色を目指すにあたっては、1Q,1Dを夏休みぐらいまでに埋めていこうと思っています。
①-2 TCAでの復習、朝練、昼練
突然ですが、私は筑波大学附属高等学校でTCA(Toin Computer Association,所謂PC部)に所属して、部活で日々精進したり、仲間と交流しています。間違いなくモチベの99%これ。TCAでは、通常の部活動の時間以外にも、始業前、昼休みに朝練、昼練とバチャを立ててくれています。私はあまり参加できていませんがというか情報室で寝るなという話でもある、私も触発されて過去問を解いています。月曜日の部活では部員同士で活発に交流戦をしていて、問題の復習に役立っています。本当に何よりありがたい存在です。
②環境構築
私はVScodeで競技プログラミングをしています。あんまり最近まで乗り気ではなかったのですが、本当にQOL爆上がりです。コンテスト始まった直後はコードテスト重いじゃないですか、それが不満だったことと、PCKでエディターが必要になったとき、少し構築していたので最近本格的に使用し始めました。カラーリングが見やすかったり、言語別にファイルの仕分けができたり、結構お気に入りです。
構築はevima氏のこの動画を参考にしました。めちゃめちゃわかりやすいので、まだしていなかったら是非。
③習得したアルゴリズム
この方の記事を参考に書きます。
当然ですが、名前さえ知らないものはここにはあまり載りません。強い方々からは見苦しいかと思われますが、ここは自分の習得度の確認として書かせていただきます。
- 〇→まあ使える
- ◎→得意!
- △→微妙、調べれば使える
- ×→使えない
- ?→聞いたことがない、聞いたことしかない
グラフ
アルゴリズム | 習得度 |
---|---|
ダイクストラ法 | 〇 |
ワーシャルフロイド法 | 〇 |
ベルマンフォード法 | ? |
トポロジカルソート | ? |
クラスカル法 | △ |
木の直径 | ◎ |
探索
アルゴリズム | 習得度 |
---|---|
BFS | ◎ |
DFS | ◎ |
bit全探索 | ◎ |
二分探索 | ◎ |
答えで二分探索 | 〇 |
順列全探索 | ◎ |
三分探索 | × |
半分全列挙 | × |
尺取り法 | △ |
DP
アルゴリズム | 習得度 |
---|---|
一次元DP | ◎ |
ナップサック問題(2次元DP) | 〇 |
最長共通部分列(LCS) | ? |
最長増加部分列(LIS) | ? |
区間DP | ? |
期待値DP | ? |
bitDP | ? |
桁DP | ? |
数学・幾何
アルゴリズム | 習得度 |
---|---|
GCD / LCM | ◎ |
累積和(1次元) | ◎ |
累積和(2次元) | △ |
いもす法 | ◎ |
素因数分解 | ◎ |
約数列挙 | 〇 |
高速素数判定 | ◎ |
エラトステネスの篩 | ◎ |
高速冪乗計算 | △ |
逆元 | △ |
modの扱い | △ |
拡張ユークリッドの互除法 | ? |
行列 | ? |
FPS | ? |
データ構造
アルゴリズム | 習得度 |
---|---|
set | ◎ |
dict(map) | ◎ |
DSU(Union-Find) | 〇 |
heapq(priority queue) | △ |
BIT | ? |
SegmentTree | ? |
Trie | ? |
ざっとこんな感じでしょうか、お前はとにかくDPをやれといった感じですね。個人的にBFSが一番入緑に寄与しています。正直最近のD問題にグラフ関連の問題が多く、それの早解きなどで大きくレートを伸ばした感じです。DPのD問題4連続とか来たら私は終了です。
私が競プロを始め、続けている理由
始めた理由
簡単です。プログラミングがかっこよかったからです。
もう少し詳しく話すと、中学三年生のころ、友人の部活がなぜか電子電脳技術研究会(中学のPC部)に固まっていました。そんな友人たちが競技プログラミングをしており、情報オリンピックにも出場していました。そんな彼らが、とてつもなくかっこよかったからです。また作りたいものがなかったことと、多少数学が好きであること(得意ではない)から、「プログラミングするなら競プロかな~」とも思っていました。
余談ですが、私の通っている学校じゃ中高一貫校ですが、中学三年間はゲームばかりしていたため、本当に成績が悪く高校への進学が怪しい状態でした。その時点でゲームはあまりしなくなっていましたが、逃げるための方法として競技プログラミングを選んだのかもしれません。(何より親の受けはいいよね)
続けている理由
これも簡単です。もっとかっこよくなりたいからです。高校に入学し、しばらく熱が冷めていました(レート遷移図でもわかると思います)。しかし、高校の同級生や先輩に強い人が多いのなんの。 始めて一年で水色になって、EGOI日本代表になった人もいます。合計では、青色1名、水色3名、緑色4名(私含む)、茶色3名、灰色10名です。(2025-5-11現在、私が観測している限りです。抜けあったらごめんなさい)。私よりレートが低い人でも、動画編集や、ゲーム制作ができたりとみんな私よりかっこいいのです。高校二年生になり、ありがたいことにTCAにも多くの新入部員がやってきました。少しくらいかっこいいところも見せたいです。
ここまで「かっこいい」の話しかしてませんが、もう少しいうと負けると死ぬほど悔しいからというところもあります。「負けると悔しい」という気持ちになるうちは頑張るのが、教えてくれた人たちや、TCAの仲間たちへの何よりのお返しの方法だと思います。負けても何も思わなくなったときが、私が引退するときです。
おわりに
最後のほうは完全にポエムです。すみません。
ここまで読んでいただいた皆様、長い駄弁に付き合っていただき、感謝しています。少しでも面白くいただけたのなら幸いです。
次は水色!!といいたいところですが、まずは4桁コーダーを目指そうと思います。入水記事でまた会いましょう。