A. Xor-tree
top-down に操作すべきか否かが決まります.
B. Working out
合流地点ごとに答を求めることを考えます.
あるマスから左上,右上,左下,右下方向への最適解を求めておけばよいです.
合流地点について入る方向・出る方向を適切に処理することで,合流がちょうど $1$ マスだけで起こるように注意します.
C. Guess the Tree
内部ノード以外が無限個あると思って解いて,最終的に内部ノードを全部使う大きさ $N$ の根を作れれば勝ちということにします.内部ノードとする点は $N/2$ 個以下程度しかない(それ以上だと矛盾)ので,その個数を $K$ として $O(3^K)$ が十分高速です.
葉を好きに追加できるという設定にしたので,dp の設計として,「使った内部ノードの集合」に対して「森として可能な最小頂点数」を持たせる形でだいたい ok です.これに加えて子を $2$ 個以上という制約があるので,森の根が $1$ 個か $2$ 個以上かを状態とします.
D. Tricky Function
累積和を使って書き換えると,$(i,y_i)$ という点群に対する $2$ 点の距離の最小値ということになります.最近点対という幾何の典型問題です.
E. Points and Segments
左端でソートしたときの最小の区間 $2$ つ $I_1=[L1,R1)$ と $I_2=[L2,R2)$ について見ます.
$R1\leq L2$ ならば $I_1$ の色を好きに決めて捨てます.
$1$ 枚しか区間がない部分は無視できるので,区間を縮めて $L=L_1=L_2$ としてよいです.$R_1 < R_2$ ならば,これらは逆の色で塗るという約束をしたあと $I_2$ を $[R_1,R_2)$ に取り換えます.
これで処理 $1$ 回につき区間がひとつ減るので,これを反復すればよいです.
