はじめに
百聞不如一見
自己紹介
- tozangezanです
- 赤コーダーです
- 11年以上競技プログラミングやってます
- 何かと問題集を埋めるのが好き ... 過去にはSRMのDiv1Hardをひと夏で300問埋めたり、AOJのSolved数1位になってみたり、SRM 500~699のDiv1Mediumを全部埋めてみたり
- 毎日何かを休まずやり続けるのも好き ... トレすご5年以上欠かさず毎日ログイン、#1日150mikanGREランダム、#1日150mikanTOEFLランダム、#1日150Shokubutsuランダム、#毎日Awoo (以上Twitterのハッシュタグ)、Anki約2年間毎日継続、Speaking Challenge8ヶ月皆勤、r/WriteStreak 現在2ヶ月以上継続
- ということで競プロ系でも毎日やる系をやりたくなった
きっかけ
- AtCoder Problemsは体裁が綺麗ですごい
- ヒートマップ登場して埋めてみたくなった
- 毎日1AC以上するだけだと、コンテストのある日は濃緑でない日は薄い黄緑になって見栄えが悪い
- → 毎日4AC以上すれば見栄えも綺麗
- やったー
実際に埋めたものに関して、コメント
この1年間で約1800問埋めました。1日5問くらいだと思うと、高校生の時にPOJでやってた時のペースと一緒だから無理ないペースなんだと思う。
ABC、PAST、DPまとめ、リレーなど
とにかく簡単枠の問題数が多くて、AC数ベースで精進するにはかなり楽な環境だと思う。その点でこのレベル帯ばっかり解いて満足してしまう人がたくさん出そうなのは微妙かも。まあ1日4問ペースでやっているとここらへんの問題は早々解き尽くすので、さほど問題ないと思う。ただ、とにかく数が多すぎて飽きるので、抱き合わせ的な感じで難しい問題を解いた日に一緒に解くのがおすすめ。
赤コーダーとしてここらへんの問題を解いていて得られるものはほぼないんだけど、問題を解くのにかかる時間も無視できるレベルだから、たまにある収穫のために全部解いてもそこまで大損ではないと思うけどね。
ARC
冬くらいだったか、全部埋めました。ARCのタブに入っている問題はとにかく古い問題だらけなので、今では典型となっている問題も多くて練習になる一方、実装がむやみやたらとしんどい問題、変なケースがある問題など、(特にunrated ARCは)ガラパゴスなので、人を選ぶと思う。そもそもARC全ACはまだ2人なのかな。
ABCと比べても、必要な労力に対して得られるものが薄い。旧ARC埋めるくらいならCFをやれよというのは正論。
Other Rated ContestsにあるARC格の問題はかなり練習になるものが多い。学ぶところがたくさんある。ただしAGCに比べると実装がしんどかったり面倒な要素があったりするので、時間対効率を考えるとAGCほど優先順位が高くないというのはある。同じ難易度帯のAGCがなくなったらこっちをやるのが良いのでは。
JOI
2011までは現役時代にほぼ全部埋めたんだけど、JOIを引退してから8年間近い問題、特に合宿の問題がまるまる残っていた。とにかく全問題難しい上実装も異様にしんどかったりして、もっとも埋めるのが大変だった。これ全問埋めてる某現役選手とかマジですごいよ。
考察も実装も重い問題とか、データ構造とかの練習には赤コーダーになっても飽きない物量を誇ると思う。ただあまりに必要労力がでかいので、こればっかりやってるといやになってくると思う。上にあったABCとの抱き合わせとか、予選と合宿の抱き合わせとか、いろんな方法を駆使して労力を分散するべきだと思う。
有志コンテスト
ものによるけど、総じて質が低いと思うので競プロ練習したい人でAtCoder公式の問題がまだまだたくさんある人にはおすすめしないかな。writerにもよるから面白いコンテストはたくさんあるので(りんごさんのやつとかクリスマスとか)一概には言えないが、「問題文がめちゃくちゃ」「収穫がない」「実装量だけで難易度を稼いでいる問題が多い」などネガティブイメージが強め。なんか準備する人が張り切っているのかABCのように一瞬で解き終わるものでもないので、練習としても時間対効率が悪い。本当はおすすめ問題を投票できたりしておすすめだけ解ける機能とかあるとベストなんですけどね...
AGC (まだ埋まってない)
一番難しくてしんどくて、一番効果がある。そして練習効果がある中で一番実装が楽。埋められる限り埋めるべき。新しいものと古いものでそれなりに傾向が違う点などは注意。JOIを埋めても大した伸びを実感できなかったが、AGCを埋め始めてから頭が冴えるようになったと思う。(もしくは、AGCの問題には結構パターンがあってそのパターンを習得しただけかも。)正直これを単体で毎日続けるのは相当しんどいので、前述の通りいろんな問題と混ぜて解いてやるのがいいかなと思う。
AtCoderを使ったおすすめ精進プラン
僕はRatedになったときにすでに相当たくさん問題解いてて早々赤コーダーになったタイプなので、他の色がどのくらいの問題を解ければなれるのか分かりません。あくまで参考程度にしてください。
水色以下
新ABC全部やる→Other Ratedの600点くらいまで全部やる→ここ10年分くらいのJOIの本選を埋められるだけ埋めてみる
青、黄色
水色以下の項目全部埋める(簡単すぎるのはやらなくて良いです)→AGCの橙diffくらいまでを全部やる→Rated ARCの800点くらいまで全部やる→(DP・数学が足りないと感じるなら)SRM500~700くらいのDiv1Easyを全部埋める、(実装力・木などが足りないと感じるなら)CFを埋める(詳細がよくわかりません...)
橙
黄色以下やる(簡単すぎるもの、後半に書いた優先順位の低いものはやらなくて良いです)→(試験管の付いてない)赤diffまでを全部埋める→りんごさん有志・東大・京大・JAGなどのうち直近5年分くらい片っ端から埋める→Div1Medium埋められるだけ埋める(直近はひどいのでやらなくて良いかも)/CF Div1やりまくる(writerを選ぶべき、レートかな)/JOI合宿Lv10くらいまで埋める
赤
人生終了バチャ人員でもやってろ
これから先
ちょっと疲れたので、流石にこのペースでAtCoderの問題を埋めていくのはやめます。でも僕はAGCで本気で勝ちたいし、Solved 1位にもなりたいので、まだまだAtCoderでやりたいと思えるものはやっていきます。
苦手: 100000のN log Nのやつ全般、グラフ、木、Greedy、高度数学。
Codeforcesさん... (正直な話、苦手なものを練習して伸ばすというのがレートに繋がるかと言われると、微妙だと思ってます。特にAtCoderはあたりを引くゲームなので高配点の数え上げをとくことの方がよほど重要なのではないでしょうか。と言ってもAtCoderのシステムは難しい問題がすぐに解けても一個前の簡単な問題で時間がかかるとアドバンテージが全部消える仕様だからある程度はできないとダメなんですね〜)
- AtCoderでまだ埋めたい: Rated残り。東大・京大セット。Xmas。技術室。
- 他のサイトでやりたい: ちょっと昔のTopCoder Div1Hard、Codeforces、Yandex、GCJ、Codeforces、Project Euler、Codeforces。
僕はバチャをやることに抵抗がある(飽きる、やる気が持続しない)のですが、バチャの良いところは実際のコンテストでの振る舞いの練習ができたり、時間制限があるなかで考察を素早くする練習になることだと思っています。特に僕は実装速度に比べて考察が遅いので(実装が速いだけでは?)、ここが大きな課題です。まああと木・グラフ・データ構造が苦手
個人的な感想としてはどうやら日本人の得意分野と海外勢の得意分野はだいぶ乖離してる(しかも国によるっぽい?やたらアメリカ人が強いセットとかもある)ので、その差を埋めるためにはCF・Opencupをちゃんとやらないといけないと思う。各国で競技プログラミングやってる人のバックグラウンドも違うので、アメリカ人向け数学バリバリコンテストとかも本当は手を出したい。具体的にどうすれば手を出せるかはいまいちよくわからない。
まあでも今までのオンラインジャッジスタイルが好きだからオンラインジャッジスタイルに向いてそうなところに引きこもっちゃうかな?
自宅待機の力
正直、毎日家で過ごす生活のおかげで問題を考えたり解いたりする時間や気力が確保しやすくなったことに救われました。
ゆるして
マラソンの0点AC、準備ミスの問題の変なAC等何から何まで使いまくった。途中でJOI2016合宿の問題のリジャッジがあった時は死ぬかと思った(ACしたのだいぶ昔でセーフ)。JOIのリアクティブだけはちゃんと100点とったから許して。Natural Park? 知らない子ですね...