A. Level Statistics
それぞれの回数が単調増加で,クリア数の増分がプレイ数の増分以下.
B. Middle Class
目標人数を決めると,上位 $n$ 人の平均達成できるかで判定できます.その平均未満の人は混ぜると単に損します.
C. Circle of Monsters
最初に倒す人を固定します.その直前で切って円環を列としてよいです.その場合先頭から順に倒していくのが最適です.結局一人を除き,最初以外に倒したときのコストで倒せます.
D. Minimum Euler Cycle
適当な小さい場合で規則を考えます.出力に不要な場所を計算しすぎないように注意.
1,2,1,3,1,4,1,5, 2,3,2,4,2,5, 3,4,3,5, 4,5, 1
E. Divisor Paths
余分な素数を削っていったあと足りない素数を足していくのが最適になります.そうでない操作は操作順を入れ替える議論で最適でないことが分かります.またこのような操作列ではコストは定数です.
削るところ,足していくところの並べ替えをかぞえます.
F. Strange Function
各 $b_j$ に対して,$a_i=b_j$ に対する $i$ に対してそこで列のそこまでを作るときの最小コストを持つ dp を考えます.遷移元のうち,$i$ までのところで累積和と dp の差分が最小のところから遷移してきます.
G. Substring Search
マッチできる文字の組に対して 01 列をふたつ作り畳み込めば,マッチ出来た組を数えられます.FFT を $2\sigma$ 回程度で済ませれば TL は大丈夫でした.