はじめに
ABCの問題を解いて,その問題を解くために重要だった考え方を短くメモしていく記事です.コンテストで詰まったときに発想の引き出しにしたいなと思っています.順序は僕が解いた順になります.また,特に言及すべきことがない場合は省略します.
まとめ
・実装は、非境界条件を基準に書いた後に,境界条件でも動くように調整する.(そのほうが思考が整理されやすい)
・再帰的に解くといいかも
・どれかの変数を $\mathrm{fix}$ して数え上げるとうまくいくかも
・DPを考えてみる
本編
ABC457
D 解が単調なとき,最小値については二分探索が有効
E 二分探索を何回も行うので,ライブラリに頼るのが得策
ABC456
D 末尾の情報を持ったdp
E 都市と曜日の組を頂点とみなして,グラフに帰着させる
ABC455
D 双方向リスト(クエリ逆順でも解ける?)
E $A=B=C$ を $A-B=B-C=0$ ととらえる.条件を満たす区間を $(A_l-B_l,B_l-C_l)\neq(A_r-B_r,B_r-C_r) $ とする
F lazysegtreeの使い方を覚えておく.紙にかいて式を整理してから実装する
ABC454
E 市松典型.経路構築を再帰的に
ABC453
D 座標と直前の移動を一つの頂点としてグラフに帰着
ABC452
D 解き方がいろいろいろ.二分探索やdp
ABC451
E 根を固定して根からの距離について昇順に頂点を処理する dynamic programming
ABC450
D 操作によって $\mathrm{mod}\ K$ における値が不変量であることに気づく
ABC449
D 重実装だけど再帰的にやると軽い
ABC448
E シンプルな数学.あまりと商を置いて丁寧にやる
F Mo's Algorithm だけど分割数がシビア
ABC447
E $2^0,2^1,2^2,\cdots$ において $n$ 項目までの和が $n+1$ 項を超えないことがキモ
F 全方位木DPをやる
ABC459
D さすがに $\sigma=26$ では重い $O(\log{\sigma})$ よりも軽い $O(\sigma)$ のほうが早い
E $_n\mathrm{C}_r$ は前計算で $\lt O(n),O(1)\gt$ だけど $$_n\mathrm{C}_r=\frac{n\times(n-1)\times\cdots\times(n-r+1)}{r\times(r-1)\times\cdots\times 1}$$
なら $O(r)$ なので本制約ではこっち