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

前回のAtCoderでついに,念願の青色になることができました!!
本来は,今年中に青色に行ければいいなと思っていたので,非常に嬉しかったです.

競技プログラミングを初めて約一年半,青色になるまでに自分のしてきたことをまとめて,振り返ってみようと思います.


出会い

競技プログラミングの出会いは,三年生の初め頃でした.

ただ,実は競技プログラミングというか,AtCoderやAOJは二年生の8月ころに始めていました.
しかし,その頃は「コンテスト」という概念を知らず,リアルタイム性もなく,ただただ過去問を解いていたためすぐに飽きてしまいました.

その後,三年生になって,AtCoderというサイトにコンテストがあると知り,それに出てみたところ非常に楽しく,それからの生活はすべて競技プログラミングを中心として回るようになりました.


始めての挫折

三年生(というか二年生の末)から,積極的に始め,この頃が毎回レートが上がっていて楽しい時間だったと思います.

というのも,これまでもゲームプログラミングや,機械学習,Web系などいろいろとやっていたため,「計算量」「アルゴリズム」が関係しない,実装問題は解くことができていたからです.

しかし,そんなに事がうまくいくはずもなく,3月ごろにいわゆる茶色と緑色の壁,点数でいうと200と300の壁に取り込まれることになります.


挫折(2回目)

300点の過去問を埋め始め,とき終わった頃にはいわゆる緑色の上位辺りになりました.

しかし,今度はいわゆる緑色と水色の壁,点数では300と400の壁に取り込まれることになります.

個人的にはこの頃が一番辛く,何をやってもレートが伸びない,なんかしょうもないミスをしてヘラっていました.


なんとか水色に

その後,なんとか400を初めてコンテスト中に通し,水色の仲間入りを果たすことができました.

時期的には,ICPCの一週間ぐらい前なので,ウキウキでICPCに望んだのを覚えています.

その後緑色に一度着弾しながら,そこからは着実に水色を少しずつ伸ばすことができました.


水色の停滞

何回目の停滞でしょうか…

水色の1400あたりで三年生の年末,ずっと停滞していました. これはおそらく,400を安定して通せない,500は基本的に通せないのが原因だったと思います.

ここらへんで,Codeforcesに手を出し始め,コンテストの復習が追いつかなくなってきた時期に突入します.

それでも頑張って毎日やってたので,着実に実力がついていたのだと思います.


そして伝説へ...(は?)

今年の3月ごろから非常に調子が良くなり,青パフォや橙パフォがでるようになりました.
原因としては,「400の過去問を埋めまくる」「こどふぉに毎回出て,実装に強くなる」「基本テクを網羅する」「朝ゴリに出る」などがあると思います.

ここ二週間,毎回良いパフォで青色になることができるはずだったのですが,Unratedなので,苦汁を飲まされていました.

なんとか今回のABC127/128で,うまく立ち回ることができ,ついに念願の青色のなることができました〜〜


青色になるには

青色になるために学んだことは

  • しゃくとり法
  • グラフアルゴリズム
  • 動的計画法
  • 二分探索
  • ビット演算
  • TSP
  • セグメント木(遅延評価)
  • BIT木(セグメントしか使ってないのでもう覚えてない)

ぐらいな気がします.

ただ,これは,いわゆるアルゴリズムの名前があるものに関しての知識なので, 例えば

  • 最大値・最小値の変換
  • 逆から考える
  • 包除原理
  • 実は全探索

など,細かい意識やテクニックは,問題をとき続けるしかない気がします.


青色を持続するには

おそらく僕は青色をキープするのがおそらく難しいです.
というのも自分は100~400の早解きはできますが,500は4割,600は2割ほどしか解けないからです. というのも,500, 600はほとんど過去問も自力で通せていないので・・・

ここらへんから自頭やアルゴリズム,実装能力など一問一問難しいのを解いて理解・定着させることが必要なのだなと思います.

また,こどふぉももっと解いて,いわゆる典型や実装がうまくならないといけないと思いました.


目標

青色を今年は常にキープして,いずれは黄色になりたいなぁ・・・(厳しい)

そのためにも早く院試を終えて,きっちりと500, 600を安定して早く通せるようになりたいです!

ganariyaでした〜〜〜