A. New Bus Route
ソートして差分の最大値を数える.
B. Counting-out Rhyme
書いてある通りにシミュレーション.
C. Divide by Three
1, 2 の両方を削除することはしないとしてよいです.1 や 2 を $3$ 個以上削除することもしないとしてよいです.削除するもの・個数を決めたら,なるべく後ろの位置にあるものを使う方が,prefix にのこる 0 の個数が増えにくいです.これで候補が $O(length(N))$ 通りになります.
D. Paths in a Complete Binary Tree
1 つ移動する処理ができればよいです.高さを見れば移動するときの差分がわかります.
E. Colored Balls
ひとつあたりの個数は $floor(A[0]/k)$ と書けるものの近くだけです.
F. Mages and Monsters
ちょうど 1 秒でありうる (damage, mana) は,入力の $(x,y)$ の凸結合全体です.凸包を管理しながら,mana が指定の大きさを超えない範囲の最大 damage がいくつかを計算すればよいです.
incremental に凸包を管理して,ある $x$ 座標の前後の $2$ 点が何かを得られればよいということになります.
凸包は incremental ならば比較的容易に $O(N\log N)$ 計算量で扱えます.1 点を挿入すると,前後のいくつかの頂点が削除される感じになり,ある点が削除対象かどうかは前後の点から決まります.