nakashiiiの自由帳

自由に書きます

競プロ精進について雑メモ

今日お風呂で「どうやったら競プロで良い精進ができるのだろう」ってぼんやり考えていたことを雑にメモ 現在のレートは500後半

  • そもそも「良い精進」とは何を指すのか?ここでは「レート上昇効率が良い精進」とするのがよさそう
  • atcoder problems はめちゃくちゃいい。助かってる
  • 最近1日5ACくらいずつ茶diff解いてるけど、そうするとたくさんACしたくなってくる
  • その日、まだ1ACくらいしか解いてないと「やばい、なんか少ないしもっと解きたい!」ってなって、簡単な問題をいくつか精進してしまうことがある
  • なぜAC伸ばすのが楽しいかというと、AC伸ばすとすぐに目に見えるフィードバックがあるからだと思う。具体的には以下のようなもの
    • atcoder problemsのpie chart, streak, progress chartあたり
    • atcoder scores の精進チャート
  • 逆に、難しい問題を解く行為に対しては、目に見えるフィードバックがほとんどない(もしかしたら見つけられてないだけ?)
  • 自分にとって、いい感じの難易度をおすすめしてくれる機能はrecomendationがある。(めちゃくちゃ最高の機能でこれなしでは生きていけない体になっています)
  • 体感として、解ける問題をたくさん解いても「強くなりにくい」と感じる
  • 「ならない」ではなく「なりにくい」と書いたのには理由があって、実装力は鍛えられるから。ただしあまりに簡単すぎて一瞬で実装できる問題は強くならない。
  • そもそも、競プロで必要な能力は以下のような分類ができる?
    • (考察系)問題を見て解法を導ける考察力
    • (考察系)コーナーケースを考えつく能力
    • (実装系)解法を実装できる能力
    • (実装系)素早く実装してバグを取りのぞける能力
  • そのため、自分がどの能力が足りなくて、精進したいのかを考えて適切な精進方法を取る必要がある
  • また、上記の能力はアルゴリズムごとに必要と考えられる。例えば、DPは考察も実装もスムーズにできるけど、グラフは考察まではたどり着いて実装でいつもバグらせる。みたいな

というわけで、「良い精進」にするためには、

  • 実装力をつけたい → 特定のアルゴリズムの問題をググったりして、とにかく集中的に解く
  • 考察力つけたい → まずは座学。その次はrecomendationのmoderate〜dificultあたりの問題をひたすら解く。考察の効率だけを最大化したいなら、全問実装しなくてもいいかも。

という感じですかね?