A. Convergence
操作対象が存在する場合,両端ペアを操作対象としてしまうとしてよいです.
結局,両端削除の反復で定数列にすればよいということになります.
B. Cake Leveling
「全 prefix で解く」というのがそのまま解法ヒントになっていますかね.
ANS[i+1] は ANS[i] 以下です.この条件下で,[0,i+1] 部分の平均以下であればよいということになります.
C2. Seating Arrangement (Hard Version)
むずかしい.
「ある人が座れるのに座らない」ということが改善につながるかを考えると,つながらなさそうだった(証明あやしい)ので,それを仮定します.一人ずつ,座れるなら座るというように処理します.その際,現在の状態の自由度として,「正の人数が座っているテーブルの個数の min, max」を持てばシミュレーションできます.
D. Magical Tiered Cake
まだ
E. Snaking Arrangement
何もないと $n!$ 通りです.これは実は,中央の反対角線を占める snake がどれかの順列を決める方法と対応します.
中央を決めると左上隅,右上隅方向に一意に延長できます.これは,「最小値の蛇が消滅,他の蛇は順序を保つ」という構造になるからです.

いくつかの蛇の情報が欠けていますが,$2$ つの layer を見比べると,「その蛇の削除はどの区間で起こった」という情報になり,そういうのの総積が求めるものになります.
F. The Cake Is a Lie
非負整数列 $(x_0,x_1,x_2,\ldots,x_n)$ が「$Bx_i+Ax_{i+1}=K$ を満たし続ける」ときに good chain とでも呼ぶことにして,結局本質としては.
- $x_0=0$ からはじまる最大長の good chain を求める.
- $x_0$ を自由な非負整数として最大長の good chain を求める.
ができればよいです.
ところで,good chain について $x_i$ は $x_0$ の $1$ 次式で,係数に $(-B/A)^i$ とかが来ます.非負という条件を無視した場合,長さ $n$ の good chain について,$x_0$ は $\bmod A^n$,$x_n$ は $\bmod B^n$ で決まったりします.
特に,$A=B$ や $x_0=x_1$ などの自明な場合を除いて,あんまり長い good chain は作れないことが分かります.なので, $x_0=0$ スタートの場合は適当にシミュレーションでよいです.
「$x_0$ 任意」に対応するものは,長さ無限にできるかの判定をまずやっておきます.そのあとは目標長さ $n$ をインクリメントしながら,「整数性を満たすならば $x_0=x+A^nt$」というような $x$ を更新していきます.チェックは順に $x_i$ を $t$ の $1$ 次式で計算しながら,$x_i\geq 0$ として $t$ の範囲を絞ります.
$A^n$ がばかでかくなったら $x$ が $K$ 以下の範囲で一意になるので,「$x_0$ を固定したときの最大 good chain の計算」をやります.
あとはオーバーフローなどに注意しつつ実装を頑張るということで.
