半年以上かかってAtCoderでやっと緑になった話

AtCoderを始めて(というか競プロを始めて)7か月経ってやっと緑になることができたので、緑までの道のりをぐだぐだ書きます。

とりあえず

f:id:Zono_0317:20180415161027p:plain

レートの推移はこんな感じです。

灰色前期はB問題安定なんて程遠いくらいの実力でした。

緑になるまで24回もかかっています...遅いですね。

緑になるまでに具体的になにをしたのか

 

灰色~茶色になるまで

この時期は、ひたすら簡単な問題を解きました。

具体的には、ABC-A,Bを全部埋めました。f:id:Zono_0317:20180415162557p:plain

これは、今まで、どのレベルの問題をどれだけ解いてきたかを表す円グラフです。

ABC-A,Bは灰色の終わりごろにはすべて埋めていました。

(kenkooooさん(Twitter:kenkoooo)が作ったAtCoder Problemsというサイト(上のグラフもそのサイトのもの)で自分がどれだけACしたか、ライバルがどこをACしているかなどがわかります。便利です。使いましょう。)

逆に言えば、ABC-A,Bが安定して解けるようになれば、確実に茶色にはなれます。

頑張って過去問を解きましょう。

(ちなみに、わからないときにほかの人のコードや解説をみるとあっこれ便利だ!って思える小技を身につけられたりします。)

茶色~緑色になるまで

茶色になってからは、ABC-A,Bを2完するだけではなかなかレートが伸びなくなってきます...

(実際、茶色中期あたりで2完しかできなかったときはレートが下がってしまいました。)

つまり、茶色から緑色に上がるにはC問題を(たまにでもいいので)解けるようになるのが不可欠です。

となると、やはり過去問を解くしかありません。

ABC-Cや簡単なAGC-Aなどを解くと、発想力、実装力ともにかなり成長できるので、がんばって解きましょう。

300点まではできるだけ自力で、400点以上は少し考えてわからなければ解説など、指標を立てておくのもいいかもしれません。

400点問題ぐらいまでは、このアルゴリズムを知らなきゃ解けないぞ。という問題はほぼないので、ある程度の発想力と、それを実装できる力を養いましょう。

 

おまけ(ここからが結構重要かもしれない)

ここまで、問題を解こう!とずっと書いてきましたが、実際には問題をずっと解き続けるほどモチベーション保つのはかなり難しいです(というか自分には無理でした)

ここからは、自分がどうやって競プロに対するモチベーションを保ってきたかについて、いくつか方法を紹介します

 

1.とりあえずTwitter始めよう

ふざけているわけじゃありませんw

実際、自分もTwitterで競プロ界隈の方々をフォローしてから、レートが伸び始めました。

Twitterには強い人がいっぱいです。

中学生で青色になってる人や、ベラルーシには、10回以上コンテストで優勝してレートが4000を超えているバケモノ...凄い人もいます。

もちろん、自分と同じくらいのレート帯の人だってわんさかいます。

そういう人達と一緒に教えあったり、自分のコードのどこがダメなのかを見てもらったりするだけで、もの凄い刺激になります。

 

2.ライバルを作ろう

一人で競プロをしていても、(自分の場合)あまりやる気が出ません。

コンテストに出るとき、同じぐらいのレートの人と、今回は俺が勝つ!とか張り合うだけで、コンテスト中のやる気が段違いです。

学校の同じクラスとか、リアルで会える人がいればベストです。

さっきも言ったように、Twitter上でライバルを作るのもとてもいい方法です。

(自分の場合は学校にもTwitterにもって感じです)

 

3.アルゴリズムの勉強

これはモチベの維持とはあまり関係ないのですが(おい)

緑になるまではほぼ必要ないのですが、それから先の問題はこのアルゴリズム知っとかないと解けないよ。って問題が増えてきます。

(逆に、知っていれば比較的楽に解ける)

そこで、今まで自分が勉強してきたアルゴリズムを少し紹介します。

幅優先探索(BFS)、深さ優先探索(DFS)、Warshall-Froyd法、いもす法、(簡単な)動的計画法(DP)、(貪欲法)

自分が現時点で知っているなかでパッと思いつくのはこのへんですかね。

勉強しといて損はないです。

Union-Find木などの木構造の勉強もがんばりたいところです。

 

初心者向けのなにか

競プロ始めたばかりだよ~って人は、drken(Twitter:drken1215)さんの

qiita.com

この記事を見たり、この記事の中から選ばれてるAtCoder Beginners Selectionをやってみるといいと思います。

このコンテストを全完できたら、緑まではもうすぐです。 

 

前述のアルゴリズムの勉強に良さそうな問題

1.D - Wall

D問題ですが、Warshall-Froydを使えば驚くほど簡単に解けます。

2.C - 柱柱柱柱柱

基本的なDP問題。このぐらいは書けるようになっておくと安心。

3.C - オセロ

いもす法の問題。割と書きやすい方。

4.C - 幅優先探索

 幅優先探索を書くために出された問題といっても過言ではない。

5.D - Katana Thrower

貪欲法の勉強にいいかもしれない。

 

最後に

ここで書いたのはあくまで自分がどうやって緑になったか、であって競プロer全員に共通するものではありません

あくまで参考までに...

なにはともあれ、緑になれてよかったです!!

早く水色になってこの記事の続きを書きたい!!!