2023年には、AtCoder が開催している ABC(AtCoder Beginner Contest)に48回参加しました(ABC284~ABC334)。その取り組みについてまとめました。
参加回数と頻度について
2023年に50回のコンテストが開催されました。ABC289(2023年2月11日)とABC323(2023年10月7日)の2回は私用があり不参加でした。ABC316は欠番でした。結果的に48回もコンテストに参加することができました。コンテストを楽しみにしているため、参加を続けることができました。
2023年最後のABC334でレート1000を超えることができました。
記事にした問題について
固定ページとして紹介記事の一覧を作りました。
2023年はじめは、実力的に緑色レートまでの問題の紹介しかできませんでした。最近は、昔に解けなかった問題を解いて、紹介することも増えてきました。
1年間の Heatmap は、以下のようになりました(AtCoder Prombles 様に感謝します)。下期は水色レートや青レートの問題に取り組んでいる様子が分かります。思い出したように毎日解く時期もありますが、なかなか続きません。
振り返り(主に感想)
レートへの影響
ABC284のレートが 810 で、ABC334のレートが 1003 でした。197 増えています。1年の伸び幅としては微増と言ってよい状況ですが、少しでも学びにつながっていることはよいことだと考えています。
この微増が続けば、いつか水色になるときが来るかもしれません。一方、競技プログラミング自体を楽しめているため、目標とするレベルを強く意識しないようにしています。
酔っぱらって参加してはいけない。アタリマエだ。
いままで、すべて「Rated」で参加しています。2023年10月28日に開催されたABC326には、昼から飲んでいてかなり酔っぱらっていましたが、この時も Rated 参加しました。
結果は、B問題1完のパフォーマンス 122 でレートもマイナス70でした。酔っぱらっていたため、A問題も読み取れず、衝撃の結果となりました。
タイトルにしていますが、重要なことだからもう1回書きます。
激しく酔っぱらってコンテストに参加してはいけない。
飲みすぎたときはお休みにして、シラフでバーチャルコンテストに参加することにします。
解けるか解けないか境界になっている問題について
緑色レートのわたくしにとって解けるか解けないかの境界に位置している問題について分析しました。
グラフについて
このブログ記事で紹介した当初では、ほとんど解くことができませんでした。いまでは、(自分のレートとしては)得点源になっています。
直近ですが、ABC334E問題(Difficulty 1195、解説はこちら)やABC333D問題(Difficulty 704、解説はこちら)でDFSを使って解くことができました。今の自分の実力から考えると、そこそこの速さで解けています。
DPについて
変わらずDP(動的計画法)については苦戦しています。典型的な問題は一通り学びましたが、例えばナップサック問題をベースにした、派生問題が解けない状況です(たとえば、ABC322E問題などです)。
苦戦していますが、焦らず学びたいと思います。来年の目標でしょうか。
二分探索について
二分探索については、配列から値を探す「値の二分探索」と、解について二分探索する「解の二分探索」の2つに分けて考えています。
解の二分探索は、当初苦手にしていました。いまでは逆に、他の方法で解ける問題も解の二分探索で解いています。例えば、ABC330C問題(Difficulty 519、解説はこちら)やABC332C問題(Difficulty 161、解説はこちら)です。解に単調性がある場合は、まずは解の二分探索で考えています。
set コンテナを活用する問題
順序付き集合(setコンテナ)を使う問題はある頻度ででると考えています。
例えば、ABC330問題(Difficulty 1004、解説はこちら)やABC331問題(Difficulty 1018、解説はこちら)です。どちらもコンテスト中に解くことができました。わたしの中では得点源になっています。
最後に
定期的に書いている備忘録です。
2023年1年を通じて、コンテスト参加を楽しむことができました。運営のみなさまに感謝します。