AtCoderで水色になれたお話

はじめに

どうもこんにちはむげん(AtCoder ID: mugen1337 / Twitter)と申します.先日のAtCoder Beginner Contest 142でやっとレートが1209となり水色になれたので一つの区切りとして自分の今までの精進してきたことをまとめようと思います.(あとはてなブログのアカウントを作って記事を上げてみたかったてのもある.) f:id:MUGEN_1337:20191003012640j:plain

自己紹介&競プロをやるきっかけ

軽く自己紹介をするとぼくは仙台のどこぞの国立大学の情報学科に通う一般大学3年生です.競プロ以外のプログラミング経験はほとんどありません.
競プロをすることになったきっかけですが,2年のころ,一緒に授業を受けていた友人がAtCoderとかいうサイトで競プロをやっていると聞いて,どうやらおもしろそうってことでアカウントを作りましたが,ま~~~~ったくモチベがなく,毎日夜通しネトゲ三昧でした.これが長い灰色時代.
ところが3年の春休みなぜか競プロに熱中します(唐突)まぁ前々から何かプログラミングをしたいと思ってましたが,きっかけがなかったところ友人が競プロを始めたので僕も乗っかってやることにしました.

精進について

僕は3年の夏休み前に緑の1000あたりをうろうろしていて前半学期のテストが終わると夏休み中に水色になると友人に高らかに宣言します(インターン全落ちしたし).
そこから怒涛の精進をして結果的に水パフォ以上が連続して(直近3回ですが)出せるようになったのでその夏休みの精進したことについて以下に書いていきたいと思います.ですので,この記事は「緑上位パフォ出るけど水パフォでないよぉふぇぇぇ~><」みたいなショートヘアの似合う女の子の助けになればと思います.

f:id:MUGEN_1337:20191003014413j:plain
怒涛の精進

勉強したこと

アルゴリズムとしては蟻本の中級編まで(フローだけは飛ばした)と,4章のグラフマスターのところを勉強しました.これをしっかりと読み込んで理解して,人のライブラリをのぞいたり自分でライブラリを書いたりしました.
以下に夏休み重点的に練習したことを列挙して,実際その時に解いたおすすめしたい問題も一部添えてみます.
* とにかくbfsはdfsスムーズに! ( ABC088D,いい問題->ABC070D )
* 組み合わせや順列の問題(dwacon2018, ABC110D)
* 答え決め打ちするニブタン(ABC023D,ABC020,ABC141E(別解))
* セグ木,SparseTableなど区間を嬉しくするヤツ(ABC095,ABC125C)
* ゲーム(マジで苦手だった) (TTPC,CADDI,ABC059D)
* グラフ諸々(ABC137E,ABC074D,AGC032B)
思いつくのはこんな感じですが,とにかくひたすら問題を解いていました.
夏休みの精進を通して感じたことなのですが,400~700点問題を埋めているとデータ構造の扱いが本当に上手くなったなぁと感じます.300~400くらいの問題で適切にmapを使うと高速に解けたり,難しい問題でsetで上手くシミュレートすると計算量が落ちてACできたりと,特に本当にmapとsetの扱いが上手くなったのは感じます.

よかったなぁと思う勉強法的なの

夏休みはこんな感じでパターンごとに問題を集中して解くことの他にもランダムにイイ感じの難易度の問題をじっくり考察する.をやりました
具体的にはAtCoder Problemsの水難易度の問題を超考えました.そして解説ACを実質禁止しました.もし2時間くらい考えても解けなければ他の問題に移ってその問題はあとで移動中とか,ご飯のときとかに頭の片隅で考える,みたいなことを毎日していました.
結果的にこれが考察力を上げることにつながったと思っています.シャワーを浴びながら700点の考察を完璧に詰めたときはうれしかったですね.風呂場で全裸で踊りました.
解けた後はしっかりと模範解答や強い人のコード見て反省も

おわりに

ずっと水色になりたいと思って精進していたのですが,いざ水色になってみると困ったことに青色になりたくなっちゃったんですよね.マジで終わりがみえねぇぜ競プロ.これからも精進を絶やさず色を変えていければと思います.