AtCoder 青色になりました

AtCoder Regular Contest 112」で青コーダーになりました.

f:id:mts1104:20210214105937p:plain

本記事はいわゆる色変記事です.あまり自慢にならないようになるべく客観的に書いたつもりです. 半分くらいは自分のために書いていますが,本記事が誰かの役に立てば幸いです.

水色達成時の記事に自己紹介を載せているので興味ある方はどうぞ.

精進

精進量

精進量はかなり多い方だと思います.下埋め優先なのでAC数が多いです.精進グラフは既に橙色です.

f:id:mts1104:20210214112229p:plain f:id:mts1104:20210214112232p:plain f:id:mts1104:20210214112238p:plain f:id:mts1104:20210214112235p:plain f:id:mts1104:20210214143453p:plain f:id:mts1104:20210214112257p:plain f:id:mts1104:20210214112254p:plain f:id:mts1104:20210214112252p:plain:h200

実力向上を実感した精進

水色〜青色の期間も過去問をひたすら解く方法で精進していましたが,その中でも実力向上を実感した精進を紹介します.個人差があると思いますので参考までに.

  • 過去問精選 100 問

    • 特に DP と累積和の問題セットが豊富で実力が付いたと思います.あくまで自分の印象ですが AtCoder でこのレベルの DP の問題はやや少ないと思うので,AOJ & JOI など他所の問題を利用して特定分野を補強することは重要だと思います.しかし,これだけでは青色コーダーを目指すレベルとしては不十分で,後述する EDPC・JOI などで更に補う必要があると思います
    • 記事中に「100 問全部解けたら、水色コーダーどころか青色コーダーくらいの実力が付くと思います」とありますが,これは約1年前に書かれた記述なので注意が必要です.今の界隈レベルではこれで青色コーダーというのは明らかに実力不足だと思いますが,水色コーダー相当の実力が養われることは間違いないと思います *1 *2
    • ここに自作のチェックリストを置いているので,よろしければお使いください
  • 令和ABC

    • 青色コーダーになるために「ABC 5完」は明らかに必要条件なので,特に ABC-E の過去問を解いて精進することはごく自然な発想だと思います.それだけでなく,ABC は典型問題がバランスよく出題されているので学習効果・網羅性ともに高く,やらない理由がないです
    • 年末にはこんなバチャを立てて ABC-E を総復習しました.確実に効果があったと思います *3
  • EDPC

    • なるべく早く埋めた方が良いです *4
    • 基本的に初見殺しなので解説 AC して1問ずつしっかり勉強する,という取り組み方で良いと思います.自分は現時点で W まで埋めています
    • 推定難易度についてはこのツイートが参考になります
    • EDPC に加えて TDPC も存在します(こちらはやや難しめ)
  • あさかつ・くじかつ

    • 早解き・復習・実装効率化・ライブラリ整理などを目的として参加していました
    • あさかつは制限時間が60分に削られてるので良い訓練になりました
    • 問題を解くことと同様に早解きにも「(1) 考察パート速度」「(2) 実装パート速度」があると思っていて,さらに後者には「(2-1) 考察結果を実装に落とし込む速度」「(2-2) タイピング速度 (+ライブラリ充実度)」「(2-3) デバッグ速度」があると思っています *5.このような区別を付けて自身の課題を明確に認識した上で参加すると効果が高くなるのではないかと思います *6
  • AOJ Courses Library

    • ライブラリ作成の機会になるような典型問題がたくさん用意されています
    • DSLGPL・DPL がオススメです.DSL ではセグ木・遅延セグ木の問題セットがあります
  • JOI

    • ABC-E 相当の問題数確保・DP 練習などを目的として取り組んでいました
    • 具体的には難易度 5〜7 あたりを埋めていました.ここにも言及があります
    • ABC-F 相当の練習として 7〜9 も埋めていく予定です
  • 蟻本

    • 蟻本の良さは散々語り尽されていますが,1点挙げるとすれば網羅性の高さだと思っています
    • 教養としてじっくり読むような感じで,気が向いた時に読み返していました
    • 誤植が結構あるので注意が必要です.ある意味で読解力も鍛えられます *7
    • 4-3・4-5・4-7・GCJ の節以外は一通り読んだと思います *8
  • 螺旋本

    • 蟻本より簡単で誤植も少ないので気軽に読めます
    • 本書を読みながら幾何ライブラリを整備していますが,AtCoder で幾何が滅多に出ないことは周知の事実であり,残念ながら本番で役立ったことは現時点で一度もないです *9

メンタルについて

精進について長々と前述しましたが,結局メンタルが一番重要だと自分は思っています.別記事に書く予定です.
(2021/2/17 22:50 追記)
競プロのメンタルについて記事を書きました.

mts1104.hatenablog.com

小ネタ

  • 緑時代に Python ---> C++ に乗り換えてから,月1回くらいは int 型のオーバーフローで痛い目に遭うようになりました.嫌な気持ちになるので,自分のテンプレート・ライブラリのほとんどの int 型を一掃して long long 型に変更しました.これによって「制約を確認して int 型か long long 型か決める」という作業も必要なくなりました *10

今後について

「2021年内に黄色になる」を目標に引き続き精進します.まずは青パフォ以上を安定させたいです.

*1:もちろん,多くの問題を答えを見ずに解ける状態になったらの話です

*2:しれっと青diffと黄diffも入っているので全問制覇するのは大変です

*3:青diff以上の問題は解説ACが多かったので,何回か解き直さないと身に付かなかったです

*4:自分は ABC183-E・ABC184-D・ABC185-E・ABC187-E と立て続けに DP を落としたため,必要に迫られて EDPC を埋め始めました

*5:厳密には独立ではないです.例えば (2-1) が上手いと (2-2) の作業量自体が少なくなります

*6:自分は (2-2) > (2-3) >>> (1) > (2-1) という感じなので,あさかつ・くじかつ参加が (1) (2-1) の底上げに繋がったと実感しています

*7:自分の蟻本は赤字の書き込みで一杯です

*8:身に付いたとは言っていない

*9:ABC191-D は幾何というより誤差対処の問題だと思っています.許容誤差もないですし…

*10:AtCoder はメモリ制限が 1024 MB もありますし,int 型でないと TLE するケースにも遭遇したことはないです