d_tail's blog

備忘や記録

AtCoderでレートが初めて緑色になりました

はじめに

2018/12/2のAtCoder Beginner Contest 114でレートが800を超え,初めて緑レートになりました!

f:id:d_tail:20181206185859p:plain

その記念として,今までの記録ややったことなどについて書いておこうと思います.

他の方々の記事で既にn回書かれていることが多いですがご容赦ください.

大雑把な今までの記録

開始時

前から興味があったことと,研究室に配属されてPythonを使うことになったのでその練習を兼ねて始めました.
以下の記事を参考に入門しました.
qiita.com
競プロを紹介する際にはとりあえずこの記事を見せればOK!というレベルでわかりやすくまとめられています.

灰~茶

始めた直後はそこそこのペースでA,B問題の過去問をメインに解いていき,時々C問題の過去問も解いていました.

コンテストについては,A,B問題を解くスピードは今ほどなかったものの,C問題の部分点を解けたり,AtCoder Grand Contest(AGC)のA問題が解けたりするなどして,レートが茶色に到達しました.

茶~茶(中)

茶色になった直後に一度灰色に戻ってしまいましたが,その後もたまにC問題が解けたりして,茶色の真ん中あたりのレートにはなっていきました.

しかし,この辺りから研究の方が忙しくなってくるなどして,精進をあまりしなくなってしまいました.

茶(中)~緑

精進はあまりしなくなってしまいましたが,問題に慣れてきたこともあってC問題を解けない場合でもA,B問題をそこそこの速さで解けるようになりました.
そのため,なんとかレートは維持できていました.

そして最近,AGCや企業主催のコンテストによって少しずつレートが上がったり,何回かC問題が解けたりするなどして緑に到達しました.

やったこと

過去問を解く

過去に開催された問題の一覧と自分の提出状況を表示してくれるAtCoder Problemsを利用して過去問を解きました.
基本的にはAtCoder Beginner Contest(ABC)のA,B,C問題をある程度順番に解いていってた感じです.
f:id:d_tail:20181206230245p:plain

また,一時期C問題何もわからん状態になっていたのですが,どなたかのツイートで「AtCoder Problemsのソート機能を使って,解いた人が多い順に並べて上位のものから解くと良い」というものを目にしました.

C問題はA,B問題に比べて解法のパターン的なものが増え,発想力が求められると感じます. この方法を使えば,比較的解きやすい問題からパターン的なものの経験を積んでいけると思います.

そして何より,自力で解ける率が高くなるので精神衛生的にも良いです(重要)

便利なライブラリなどを知る

便利なライブラリを知ることでかなり解ける問題が増えました.
Pythonだと

  • collections
    • 色々なデータ型
    • リスト内の要素を数え上げるCounterをよく使っています
    • スタックとキューも:deque
  • itertools
    • 累積和,順列,組み合わせなど
  • bisect
    • 二分探索
  • queue(まだ使ったことはない)
    • 私はまだ使ったことがありませんが,よく耳にするPriorityQueueが使えるようです
    • heapqというものもあるらしい

など.

できるだけコンテストに参加する

やはりコンテストに参加して問題を解くのが一番の練習な気がします.コンテスト中に解法が思いつかないとかなり悔しい思いをするので,解説を見た際の印象も強く残る感じがします.

コンテストは,レート1200未満なのでABCに参加していますが,AGCにも参加していました.AGCは配点の高い問題が多いですが,最初のA問題は200や300点なので解ける可能性があります. f:id:d_tail:20181206203558p:plain AtCoder Grand Contest 027 - AtCoder

A問題だけでもそこそこの速さで解ければ,ABCでC問題が解けた場合と同等以上のパフォーマンスが出ます.
f:id:d_tail:20181206203909p:plain

Twitterで競プロ関連の人を観測する

Twitter上には競プロをやっている方々がたくさんいます.
強い人をフォローしていると役立つ情報が得られますし,レートが近い人を見ているとモチベーションを維持できます.

また,コンテスト終了後は参加した方々がTwitter上で自分の解法を解説していたり,他の方と議論していたりと見ているだけでとても参考になります.

ブログに解いた問題を記録してみる

こちらは最近始めたことです.
手間はかかりますがその分復習になりますし,後から見返せるのが良いです.

100均のホワイトボードを買う

紙と鉛筆よりも気軽に書いたり消したりができるので,解法を考える際のメモに便利です.また,絵や図を描いてみると解法を思いつく場合が多いので重宝しています.片面が方眼になっているのも非常に便利です.

d-tail.hatenablog.jp

今後

とりあえず茶色に逆戻りしないぐらいのレートを目指したいですね…

アルゴリズムの勉強があまりできていないのでそちらにも手をつけていきたいと思います.