😁

2年かけてAtCoderで青色になりました!

2023/11/27に公開

どうも、青コーダーの through です。(言いたかっただけ)

先日行われた ABC330 にて青色になることが出来ました!2021.11.27 がコンテスト初参加なので約2年かかりました。長かった…。記録として初の色変記事 兼 ここまでの振り返りを書いていこうと思います!


現在に至るまでのレートの推移

初めての Contest 参加から ABC が 102回 (ABC229 ~ ABC330) 、ARC が38回 (ARC131 ~ ARC168) 開催されていたようですが、自分はそのうち Unrated を含めて ABCに98回、ARCに36回参加していたようです。

ここ2年でのABC, ARCのコンテスト参加率は、95.7142...% (134/140) でした。
正直こんな参加していたとは自分でも驚きです。

そして AtCoder 社長の chokudai氏のブログによると…

青は超優秀です。学生時代を競技プログラミングに注ぎ込んでも、ここにたどり着けない学生は大量にいます。競技プログラミング未経験者では、このレベルと競技プログラミングで戦うことは殆どの場合は無理です。8割以上のIT企業において、アルゴリズム力はカンストです。一部企業においては、少し持て余してしまうかもしれません。

らしいです。ようやく超優秀になれました。これは嬉しい。

https://chokudai.hatenablog.com/entry/2019/02/11/155904

自己紹介

  • 名前 : through
  • 所属 : 地方国立大学3年 情報系学部
  • AtCoder歴 : 2021.11.27 ~ (記事公開時でジャスト2年)
  • プログラミング歴 : 大学入学 ~
  • 競プロ使用言語 : C++
  • 現在 (2023.11.27) の精進の様子 ↓


自分はあんまり『埋める』という意識ではなく、適当に自分用の Virtual Contest を立ててそれをやったり、他の人のバチャコンに参加する感じでやってます。新しい問題を解くと同時に、過去にやった問題も出題される為復習も出来るので個人的に良い方法なのではと思っています。

水色 → 青色 になるまでにやったこと

1. ABCの水・青diff埋め

自分の適正レート帯を解くという誰もがやる王道です。ただし自分は、自分のレート帯より上位の問題を解いてアドレナリンを出すことをモットーにしているので、競プロを始めたての時から自分の1色上の問題を意識した精進をしています。その為水色のうちは、青diffも結構解いて精進していました。
実際に自分の適性難易度より上の問題が解けた時の喜びはひとしおです。( レートを爆上げして脳汁を解放することに価値を感じる人 )

水diff は Max 20分、青diff は Max 30分まで考えて、一度も手を動かせなかったらその場で解説を見るようにしてました。解説をいつ見ればよいか問題があると思いますが、自分は思いつかなそうと思ったら案外すぐ見てもいいんじゃないかというのが自論です。(勿論希少なコンテストはあまり見ないようにしたりとかはある。)

以下が AtCoder Type Checker さんでの自分の評価です。ここから分かる通り、自分は他の水コーダーよりも解くのは遅いが、時折ABC6完・ARC3完をして一気に上げるタイプです。


実線より ↑ にあるほど多く解くタイプで、↓ にあるほど早く解くタイプ

自分の所感なんですが、青になることが目的であれば、青diff を解く必要はあまりない気がします。青diff精進のおかげで、確かに青中上位の成績を取れる確率は上がったのですが、水色の速解が苦手なせいで速解回では中々良い成績が出せず、結局相殺されてかなりの期間停滞してしまいました。その為、とりあえず青になりたい方は青ではなく水diff精進をおススメします!
( レート爆上げで脳汁を解放したい方はどんどん青もやりましょう! )

2. AtCoder Library Contest

AtCoder では、よく使う有名なデータ構造のいくつかが ACL (AtCoder Library) として使えるようになっています。個人的に ABC で実際に利用してACの役に立ったのは Modint, DSU, Fenwick Tree, SCC, Segment Tree, Lazy Segment Tree です。この6つが応用出来るのと出来ないとでは天と地の差があると個人的に思ってます。

( Lazy Segment Tree に関しては青相当な気がしますが、たまに公式の想定解法を無視してデータ構造の暴力で解ける時もあるので覚えておいて損なしだと思います )

自分は Convololution や Maxflow 等も履修してみましたが、青になる過程では使いませんでした。まだ応用までは出来ず扱いこなせてはいませんが、アルゴリズム自体はとても面白いので好きです。

https://atcoder.jp/contests/practice2
https://www.notion.so/AtCoder-Library-ACL-01a562f6c38e481e88f5a838fd78eb0e

3. EDPC A~Z (全部)

DP は個人的にアルゴリズムの中で一番好きなのでEDPCを全部解きました。

後半は青になるには不要だと思いますが、どの問題もこんな天才な考え方があるのかと毎回感心します。個人的に競プロを楽しむ上でとてもおススメの問題集なので、まだ最後までやっていない方は是非やってみてください!

個人的に天才pointが高めで好きな問題は、J, R, U, V, Y です。解説を見た時に感動しました。是非解いてみてください!
https://atcoder.jp/contests/dp


EDPC完走のしるし

4. 競プロ典型90問 (~★5, ★6もちょっと)

新しいアルゴリズムの習得や考察の仕方をおさえる上で非常に重宝しました。解説が丁寧 & サンプルコードが付いているので、とても効率的に進められる教材だと思います!

この問題集を作成した方が自分と同学年の方であることを知った時は驚愕しました。素晴らしい教材を提供してくださって有難うございます<(_ _)>

https://atcoder.jp/contests/typical90

競プロの振り返り

入灰 (2021.11.27)

AtCoder に出会ったのは 2021年11月 (大学1年の冬) でした。
大学入学するまでプログラミングは未経験でしたが、大学の友人にプログラミングに詳しい人が多く、その波に乗るようにweb系のプログラミングを触っていました。

いつものように Discord で友達と話していた時に AtCoder が話題に上がり、そこで初めて問題を解いたところドはまりしてしまい、いつの間にか競プロの虜になっていました。

というのも、自分は生粋のレーティングゲーム好きで、ポケモンやスプラトゥーン、ぷよぷよ等を結構やっていました。その為「頭を使うパズルレーティングゲーム (競技プログラミング)」 に魅力を感じ沼にハマっていくことになりました。

入茶 (2022.01.29)

初の色変は競プロを初めて2ヶ月くらいの頃で、正直この時期が一番精進していた気がします。冬休みが競プロで潰れた記憶と同時に、初めての色変で競プロコミュニティの方々が凄く祝ってくださりとても嬉しかった記憶が蘇ってきました。

当時これといって趣味と断言出来るほどのものはありませんでしたが、久しぶりに人にも『これに超ハマってる!』と言える程の趣味になりました。

入緑 (2022.04.16)

ちょうど学年が変わる頃に緑色になりました。そしてちょうどこの頃、大学のプログラミングサークルに入会し、初のリアルでの競プロ仲間をgetしました。弊サークルは当時人数が少なくかなり内輪ノリみたいな感じでしたが、競プロの会話が実際に出来るのはとても楽しくて新鮮でした。

入水 (2022.09.05)

夏休み中に入水しました。この頃を思い出そうとしましたが、正直あんまり記憶がありません。普通に夏休みを遊んだりのんびりしたりして満喫していた最中だったと思います。当時は半年後位に入青出来るだろーなーと思っていましたが、鬼の停滞期に入ることを当時は勿論知りませんでした。恐ろしい…。

待ちに待った入青 (2023.11.25)

待ちに待った入青はなんと前回の色変から 1年と2ヶ月もかかってしまいました。入っていたサークルでは上級生になり教える立場になったり、院進 or 就職を考えなければいけない時期になったりと時代の流れを感じますねー。(おじさん思想) 色変というものを忘れていましたが、実際に久しぶりに色変して、やっぱ色変は最高だなと改めて思いました。

Twitter X の競プロコミュニティはかなりあたたかく、色変はいつも多くの方々が祝ってくれます。控えめにいって最高です。お祝いリプ・いいねをくださった方々、ありがとうございます!!

おわりに

ようやく長い間目標にしていた青色コーダーになることが出来てとても嬉しいです。『目標達成!』で終わる訳もなく、次の新しい目標に向けてどんどん精進していく所存です。

次の目標は「学部生のうちに黄色になる」ことです!

水色 ⇒ 青色になるのに 1年2ヵ月 と想像以上に時間がかかってしまいましたが、この目標を達成出来るようにこれからも自分のペースで精進を続けていきたいと思います!

ここまで読んでくださりありがとうございました!

Discussion