AtCoderで入緑したので入緑記事を書いてみた

<h1>ABC325で入緑！！！</h1>
2023年10月21日の<a href="https://atcoder.jp/contests/abc325" target="_blank">AtCoder Beginner Contest 325</a>で緑になりました！<br>
AtCoder本格始動(2022/12/24)から約10か月、入茶(2023/06/10)から約4か月半で到達しました！<br>
個人的な記録も兼ねて、色変記事を残します。

![スクリーンショット 2023-10-21 231532.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/269f0536-4eb9-e6c5-734c-a15412bd45a5.png)

<h1>入緑時点でのパフォーマンス推移と精進記録</h1>
<h4>・パフォーマンス推移</h4>

![スクリーンショット 2023-10-22 101441.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/c25ec3da-a792-63b6-c875-e7e50f9d201f.png)

<h4>・Achievement</h4>

![スクリーンショット 2023-10-22 004937.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/4334b669-2e56-f656-b864-25bfe5a49e6e.png)


<h4>・Difficulty Pies</h4>

![スクリーンショット 2023-10-22 005038.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/bd0559e4-34e6-c228-b69b-810d272abed4.png)


<h4>・Progress Charts</h4>

![スクリーンショット 2023-10-22 005136.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/239347ff-eb98-4f7f-a3e2-41ff2671a251.png)


![スクリーンショット 2023-10-22 005156.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3287003/20d7dcbc-38c8-39e1-23cd-3df9f3e8f9b5.png)


入緑直前期は緑パフォをとれるようになってきているなという印象です。
要因としてはHeatmapにあるように緑diffの問題を解く習慣をつけたことが大きかったと思います。

<h1>直近10回のABCでの成績</h1>

||A|B|C|D|E|Perf|Rate|
|---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|<a href="https://atcoder.jp/contests/abc314" target="_blank">ABC314</a>|〇<br>2:08<br><font color=#808080>diff: 30</font>|〇<font color=#FF0000>(2)</font><br>12:50<br><font color=#808080>diff: 135</font>|〇<br>25:31<br><font color=#808080>diff: 342</font>|×<font color=#FF0000>(4)</font><br>-<br><font color=#804000>diff: 585</font>|-<br>-<br><font color=#0000FF>diff: 1722</font>|<font color=#804000>586</font>|<font color=#804000>550</font>→<font color=#804000>554</font>(+4)|
|<a href="https://atcoder.jp/contests/abc317" target="_blank">ABC317</a>|〇<br>2:49<br><font color=#808080>diff: 14</font>|〇<br>6:20<br><font color=#808080>diff: 22</font>|-<br>-<br><font color=#804000>diff: 604</font>|-<br>-<br><font color=#008000>diff: 929</font>|-<br>-<br><font color=#008000>diff: 1085</font>|<font color=#804000>569</font>|<font color=#804000>554</font>→<font color=#804000>556</font>(+2)|
|<a href="https://atcoder.jp/contests/abc318" target="_blank">ABC318</a>|〇<br>2:39<br><font color=#808080>diff: 14</font>|〇<br>7:58<br><font color=#808080>diff: 101</font>|〇<br>43:08<br><font color=#804000>diff: 400</font>|-<br>-<br><font color=#008000>diff: 1017</font>|-<br>-<br><font color=#008000>diff: 1004</font>|<font color=#804000>735</font>|<font color=#804000>556</font>→<font color=#804000>575</font>(+19)|
|<a href="https://atcoder.jp/contests/abc319" target="_blank">ABC319</a>|〇<br>4:23<br><font color=#808080>diff: 10</font>|〇<br>11:33<br><font color=#808080>diff: 70</font>|〇<br>55:13<br><font color=#008000>diff: 1111</font>|-<br>-<br><font color=#804000>diff: 631</font>|-<br>-<br><font color=#00C0C0>diff: 1353</font>|<font color=#804000>755</font>|<font color=#804000>575</font>→<font color=#804000>595</font>(+20)|
|<a href="https://atcoder.jp/contests/abc320" target="_blank">ABC320</a>|〇<br>0:53<br><font color=#808080>diff: 10</font>|〇<br>4:55<br><font color=#808080>diff: 84</font>|×<font color=#FF0000>(5)</font><br>-<br><font color=#008000>diff: 851</font>|×<font color=#FF0000>(2)</font><br>-<br><font color=#008000>diff: 873</font>|-<br>-<br><font color=#008000>diff: 1096</font>|<font color=#804000>746</font>|<font color=#804000>595</font>→<font color=#804000>611</font>(+16)|
|<a href="https://atcoder.jp/contests/abc321" target="_blank">ABC321</a>|〇<br>2:08<br><font color=#808080>diff: 22</font>|〇<font color=#FF0000>(3)</font><br>44:06<br><font color=#808080>diff: 220</font>|〇<font color=#FF0000>(3)</font><br>51:59<br><font color=#804000>diff: 591</font>|〇<br>68:42<br><font color=#008000>diff: 806</font>|-<br>-<br><font color=#0000FF>diff: 1627</font>|<font color=#008000>985</font>|<font color=#804000>611</font>→<font color=#804000>656</font>(+45)|
|<a href="https://atcoder.jp/contests/abc322" target="_blank">ABC322</a>|〇<br>2:56<br><font color=#808080>diff: 12</font>|〇<font color=#FF0000>(1)</font><br>8:23<br><font color=#808080>diff: 54</font>|〇<font color=#FF0000></font><br>13:21<br><font color=#808080>diff: 128</font>|-<br>-<br><font color=#00C0C0>diff: 1310</font>|-<font color=#FF0000>(5)</font><br>-<br><font color=#008000>diff: 1193</font>|<font color=#804000>742</font>|<font color=#804000>656</font>→<font color=#804000>665</font>(+9)|
|<a href="https://atcoder.jp/contests/abc323" target="_blank">ABC323</a>|〇<br>2:48<br><font color=#808080>diff: 15</font>|〇<font color=#FF0000></font><br>6:53<br><font color=#808080>diff: 75</font>|〇<font color=#FF0000></font><br>19:17<br><font color=#808080>diff: 357</font>|〇<br>32:30<br><font color=#008000>diff: 852</font>|-<font color=#FF0000>(2)</font><br>-<br><font color=#00C0C0>diff: 1279</font>|<font color=#008000>1175</font>|<font color=#804000>665</font>→<font color=#804000>728</font>(+63)|
|<a href="https://atcoder.jp/contests/abc324" target="_blank">ABC324</a>|〇<br>3:18<br><font color=#808080>diff: 15</font>|〇<font color=#FF0000>(1)</font><br>6:09<br><font color=#808080>diff: 91</font>|〇<font color=#FF0000>(1)</font><br>25:55<br><font color=#804000>diff: 637</font>|〇<br>52:42<br><font color=#008000>diff: 895</font>|〇<font color=#FF0000></font><br>95:33<br><font color=#008000>diff: 1153</font>|<font color=#00C0C0>1253</font>|<font color=#804000>728</font>→<font color=#804000>794</font>(+66)|
|<a href="https://atcoder.jp/contests/abc325" target="_blank">ABC325</a>|〇<br>1:17<br><font color=#808080>diff: 8</font>|〇<font color=#FF0000></font><br>5:57<br><font color=#808080>diff: 171</font>|〇<font color=#FF0000></font><br>26:20<br><font color=#804000>diff: 400</font>|-<font color=#FF0000>(2)</font><br>-<br><font color=#00C0C0>diff: 1367</font>|-<br>-<br><font color=#008000>diff: 1093</font>|<font color=#008000>940</font>|<font color=#804000>794</font>→<font color=#008000>810</font>(+16)|


※<font color=#FF0000>(1)</font>はペナルティ数、-はUnsolve

ABC314,315あたりでは茶diffの問題も解けていませんが(これ以前のコンテストでも茶diffは解けないことのほうが多かったと思います)、最近のコンテストでは緑diffをACできることも増え、パフォーマンスも伸びていて、精進の成果が出てきたのかなと思います。
また、解けない場合でも提出できるくらいにはなった(とりあえずサンプルは合うなど)のが大きいですね。


<h1>習得アルゴリズムについて</h1>
入緑時点で習得したアルゴリズム・データ構造は主に以下のような感じになります(レベル感としてはいずれも基本的な仕組みを理解し、簡単な実装ができるという程度です)。

<ul>
    <li>全探索(bit全探索、順列全探索を含む)</li>
    <li>深さ優先探索(DFS)</li>
    <li>幅優先探索(BFS)</li>
    <li>UnionFind</li>
    <li>二分探索</li>
    <li>優先度付きキュー</li>
    <li>動的計画法(DP)</li>
    <li>素数列挙(エラトステネスの篩など)</li>
    <li>約数列挙</li>
    <li>累積和</li>
    <li>貪欲法</li>

</ul>

※このほか、基本的な計算量削減手法・テクニックを含みます。
多くのアルゴリズムや知識があれば入緑までの期間は短くなりますが、正直、ここに挙げたものをすべて理解していなくても緑にはなれるのかなといった印象です(個人的見解)。

<h1>精進するときに意識したこと・教材</h1>
<ol>
<h3>1. 自分のレート以上のdiffの問題を解く</h3>
これがかなり大きかった気がします。<b>diffはそのレート帯の人の50%が解ける問題</b>であるため、これが解けるか解けないかがカギになると思います。また、自分のレート帯のdiff問題が一番、効果があるのかなと感じています(diffが高すぎると何をいっているのかわからない、低すぎるとすぐに解けてしまい学びが少ない)。

<h3>使用教材1. AtCoder ABC過去問</h3>
やはり、ABCの過去問に取り組むのが一番だと思います。解けなかった問題やあまり理解できなかった問題については類題を探して解いたり、<a href="https://atcoder-tags.herokuapp.com/">AtCoder Tags</a>で同じアルゴリズムで解ける問題を探したりしました。

<h3>使用教材2. 競プロ典型90問</h3>
E869120さんが作成した<a href="https://atcoder.jp/contests/typical90">競プロ典型90問</a>に取り組んだことも効果があったなと感じています。よくTLで「典型90問に似た問題があった！」などといったポストを見かけていたので取り組みました。私は★3の問題まで抑えていました。

<h3>使用教材3. 公式解説動画(YouTube)</h3>
解説を読んでもよくわからないときはYouTubeにある公式の解説動画を見ていました。基本的な部分から丁寧に解説されているので文字ベースの解説がよくわからないときにおすすめです。

<br>
<br>

私は、基本的にこの3つを使用し、わからないところはググって解決するなどしていました。

</ol>

<h1>精進の成果はすぐには出ない！</h1>

アルゴリズムの勉強をし、精進してもレートがなかなか伸びないと感じている方もいるかと思います。私も、そのような時期がありました。毎日精進していて、しっかり考察したり、解法に至るまでの道筋などを抑えるなどしっかりと学習できているのに伸びない。
しかしある時、急になんか前よりわかるようになっていると感じるようになりました。解けなかったとしても、近いところまで考察ができるようになりました。
その結果、入緑直前のABCでは今まで解けなかった緑diffが解けたり、水パフォを出せるようになったりといったように結果としても表れてきました。

なので、精進しているのに思うようにレート伸びない時期はこれから伸びるための伏線だと思って頑張りましょう！学習をやめて伸びることはないので、試行錯誤しながら継続することが一番重要だなと入緑を通して感じました！

<h1>おわりに</h1>

勢いで書きなぐっているため、生産性のない記事になってしまいました。初記事&国語苦手人間ですのでご容赦ください...
最後まで見ていただきありがとうございました！！！