AOJ 2312 - 魔法少女さやかちゃん
解法
添え字は0-indexedとします。
区間の総和は、BITや累積和を用いて高速に取得できるものとします。
とします。
仮に円環でなく直線上に音符を配置しているとした場合、明らかに音符をの昇順に配置するのが最適です。
しかし今回は、音符を並べて円環を作成しています。この場合、
となっているはずです。
つまり、円環を2つに分け、二本の直線とみなすと、それぞれが広義単調増加(減少)になっていればよいことがわかります。
あとは、を昇順でソートし、二本の直線のうちどちらに配置するか、ということを考えればいいことになります。ということで、以下のようなDPを考えます。
片方の右端が
、もう片方の右端が
になっているときの最小コスト(ただし、
もしくは
)
初期値はです。
の遷移は、場合分けで表されます。
の場合
この場合、と同じ直線に
を配置することになります。よって、
となります。の場合
この場合、を配置した直線とは違う直線に
を配置します。
つまり、と隣接する音符は、
のいずれか(
は
のときのみ可能性が存在します)であるため、
(ただし
)
となります。
これを計算すると、が答えになります。