【AtCoder】高校2年の入緑記事と、競プロを始め、続けている理由

## 初めに
2025-5-10に開催された **AtCoder Beginner Contest 405**（Promotion of AtCoder Career Design DAY）にてレート800となり、<font color="#00805a">**緑色**</font>になることができました。(~~すぐ茶色に落ちそうなどとは言ってはいけない~~)

なので、備忘録として、緑になるまでにやったことをまとめておこうかと思います。

後半では、私が競プロを始め、続けている理由について記述しています。興味ない方は飛ばしていただいても結構です。

* レート遷移図です
![スクリーンショット 2025-05-11 200925.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4084660/83c2dd40-5b0f-4921-9606-aae8a84b6eda.png)

## 目次
* [緑色になるまでの記録](#緑色になるまでの記録)
  * [①精進](#精進)
    * [①-1 NoviStepsの3Q~1D埋め](#-1-novistepsの3q1d埋め)

    * [①-2 TCAでの復習、朝練、昼練](#-2-tcaでの復習朝練昼練)
  * [③習得したアルゴリズム](#習得したアルゴリズム)

* [私が競プロを始め、続けている理由](#私が競プロを始め続けている理由)
  * [始めた理由](#始めた理由)
  * [続けている理由](#続けている理由)
* [おわりに](#おわりに)
## 緑色になるまでの記録
### ①精進
当然ですが、精進をしました。
* 2025-5-10時点での精進記録![スクリーンショット 2025-05-11 160655.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4084660/2a6ab5d3-3e20-465f-bc92-b596fea0e915.png)

私は2023年の12月に競プロを始めたのですが、これを見るとわかる通り、**私は精進が苦手ですし、遅い**です。茶以上の問題のAC数は、本当に人に見せられたものではない…
そんな私が緑色になれたのは、間違いなく<font color="#00805a">**[AtCoder NoviSteps](https://atcoder-novisteps.vercel.app/)**</font>のおかげです。

露骨な宣伝に見えるかもしれませんが、間違いなく私の精進の効率を<font color="red">**格段に**</font>上げてくれています。
#### ①-1 NoviStepsの3Q~1D埋め
<font color="#00805a">**AtCoder NoviSteps**</font>とは、AtCoderの問題を難易度別や、解法別に分類された問題集に対し、自分でAC記録をつけていくというけんちょん氏発のサービスです。（余談ですが、自分は鹿本で初めてアルゴリズムを学んだので、けんちょん氏には本当に頭が上がりません…）

問題は<font color="#77787B">**11Q**</font>~<font color="#6f4b30">**6D**</font>まで存在し、おおよそ茶色を目指すまでには3Q~2Q、緑色を目指すなら1Qが解ければ十分な実力が付くと私は思います。
* 2025-5-10時点でのNovistepsの記録![スクリーンショット 2025-05-11 171653.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4084660/8aebe007-f058-45e4-b974-acab422e00c1.png)

一つの難易度には大体200問ありますが、本当に**全部解く必要はない**と思います。演習は確かに大事です。事実私は演習量不足などであんまりコーディングが早くなかったり、考察のレベルも死ぬほど低いです。しかし、それ以上に**新しい知識を得る**ほうが私は上達が早かったです。（何より知らないことを知るほうがただ演習するより楽しい！！）

個人的な目安としては、30～40問を目安に、次のレベルに進んでもいいと思います。少しでも不安になったりしたら、昔解説ACした問題を解いてみたり、新たに問題を解いています（3Qだけといている数が抜けて多いのはそういう理由です）。
次に水色を目指すにあたっては、1Q,1Dを夏休みぐらいまでに埋めていこうと思っています。

#### ①-2 TCAでの復習、朝練、昼練
突然ですが、私は筑波大学附属高等学校でTCA(Toin Computer Association,所謂PC部)に所属して、部活で日々精進したり、仲間と交流しています。<font color="red">**間違いなくモチベの99％**</font>これ。TCAでは、通常の部活動の時間以外にも、始業前、昼休みに朝練、昼練とバチャを立ててくれています。私はあまり参加できていませんが~~というか情報室で寝るなという話でもある~~、私も触発されて過去問を解いています。月曜日の部活では部員同士で活発に交流戦をしていて、問題の復習に役立っています。**本当に何よりありがたい存在**です。
### ②環境構築
私はVScodeで競技プログラミングをしています。あんまり最近まで乗り気ではなかったのですが、本当に<font color="red">**QOL爆上がり**</font>です。コンテスト始まった直後はコードテスト重いじゃないですか、それが不満だったことと、PCKでエディターが必要になったとき、少し構築していたので最近本格的に使用し始めました。カラーリングが見やすかったり、言語別にファイルの仕分けができたり、結構お気に入りです。
構築はevima氏の[この動画](https://www.youtube.com/watch?v=uhnASau7fB4)を参考にしました。<font color="red">**めちゃめちゃわかりやすい**</font>ので、まだしていなかったら是非。

https://www.youtube.com/watch?v=uhnASau7fB4

### ③習得したアルゴリズム
[この方の記事](https://qiita.com/ryusuke920/items/c25235c193cde2cb505d#%E5%AD%A6%E3%82%93%E3%81%A0%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参考に書きます。
当然ですが、名前さえ知らないものはここにはあまり載りません。強い方々からは見苦しいかと思われますが、ここは自分の習得度の確認として書かせていただきます。
* 〇→まあ使える
* ◎→得意！
* △→微妙、調べれば使える
* ×→使えない
* ？→聞いたことがない、聞いたことしかない

#### グラフ
| アルゴリズム| 習得度|
|:-:|:-:|
|   ダイクストラ法|   〇|
|   ワーシャルフロイド法|   〇|
|   ベルマンフォード法|   ？|
|   トポロジカルソート|   ？|
|   クラスカル法|   △|
|   木の直径|   ◎|

#### 探索
| アルゴリズム| 習得度|
|:-:|:-:|
|   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をやれ**といった感じですね。個人的に<font color="red">**BFSが一番入緑に寄与しています**</font>。正直最近のD問題にグラフ関連の問題が多く、それの早解きなどで大きくレートを伸ばした感じです。**DPのD問題4連続とか来たら私は終了です**。

## 私が競プロを始め、続けている理由
### 始めた理由
簡単です。<font color="red">**プログラミングがかっこよかったから**</font>です。
もう少し詳しく話すと、中学三年生のころ、友人の部活がなぜか電子電脳技術研究会(中学のPC部)に固まっていました。そんな友人たちが競技プログラミングをしており、情報オリンピックにも出場していました。そんな彼らが、<font color="red">**とてつもなくかっこよかった**</font>からです。また作りたいものがなかったことと、多少数学が好きであること(得意ではない)から、「プログラミングするなら競プロかな～」とも思っていました。
余談ですが、私の通っている学校じゃ中高一貫校ですが、中学三年間はゲームばかりしていたため、**本当に成績が悪く**高校への進学が怪しい状態でした。その時点でゲームはあまりしなくなっていましたが、逃げるための方法として競技プログラミングを選んだのかもしれません。(~~何より親の受けはいいよね~~)
### 続けている理由
これも簡単です。<font color="red">**もっとかっこよくなりたいから**</font>です。高校に入学し、しばらく熱が冷めていました(レート遷移図でもわかると思います)。しかし、高校の**同級生や先輩に強い人が多いのなんの。**　始めて一年で水色になって、<font color="red">**EGOI日本代表になった人**</font>もいます。合計では、<font color="#0000ff">**青色**</font>1名、<font color="##7DF9FF">**水色**</font>3名、<font color="#00805a">**緑色**</font>4名(私含む)、<font color="734e30">**茶色**</font>3名、<font color="7d7d7d">**灰色**</font>10名です。(2025-5-11現在、私が観測している限りです。抜けあったらごめんなさい)。私よりレートが低い人でも、動画編集や、ゲーム制作ができたりとみんな<font color="red">**私よりかっこいいのです**</font>。高校二年生になり、ありがたいことにTCAにも多くの新入部員がやってきました。少しくらい<font color="red">**かっこいいところも見せたい**</font>です。

ここまで「かっこいい」の話しかしてませんが、もう少しいうと<font color="red">**負けると死ぬほど悔しいから**</font>というところもあります。「負けると悔しい」という気持ちになるうちは頑張るのが、教えてくれた人たちや、TCAの仲間たちへの何よりのお返しの方法だと思います。負けても何も思わなくなったときが、**私が引退するとき**です。

## おわりに
最後のほうは完全にポエムです。すみません。

ここまで読んでいただいた皆様、長い駄弁に付き合っていただき、感謝しています。少しでも面白くいただけたのなら幸いです。
次は<font color="##7DF9FF">**水色**</font>！！といいたいところですが、まずは4桁コーダーを目指そうと思います。入水記事でまた会いましょう。