- https://codeforces.com/contest/1223
- https://codeforces.com/contest/1240 (div1)
- https://codeforces.com/contest/1241 (div2)
div1 セットを扱います.
A. Save the Nature
二分探索.個数を決めると価値 x+y,x,y でとれるものの個数が決まり判定ができます.
B. Sequence Sorting
種類は座圧しておきます.一度も触らない値を決めます.この値は連番 $a,a+1,\ldots,b$ であって,$x$ の最後の出現より $x+1$ の最初の出現が後というのが条件です.
C. Paint the Tree
飽和辺全体は各頂点の次数が $k$ 以下です.逆にそのような飽和辺の集合は達成可能です.あとは親辺を選ぶか否かの 2 種の値を計算する木dpでできます.
D. Stack Exterminable Arrays
分割統治を考えます.列 $[a,M), [M, b)$ の結合が空にできるかは,$[a,M)$ と $[M,b)$ 内でなるべく xx を消すという操作をした結果の列が reverse の関係になっていればよいです.これをハッシュで判定します.
E. Wooden Raft
すべての $y$ を試します.各 $y$ に対しては二分探索します.二分探索判定問題では,$x$ を一ヶ所からふたつとるパターと $x$ を二か所からとるパターンを試します.
適当な累積和をもっておくことで,判定問題が $O(A/y)$ 時間で解けるようになります.
F. Football
差が 1 以下というのは不可能で,$k=2$ かつ奇サイクルのときが反例になります.
頂点を倍化して辺 (a,b) を $(a,N+b)$ に置き換え,二部グラフにします.これについて https://codeforces.com/contest/212/problem/A を解けば条件を満たします.
どこかで差が 3 以上になっている色 2 つを取り出してきてその 2 色だけで差が 2 以下になるように変更するという方法でも AC になりました.解説はこっちっぽいけど細かい証明は確認していません.