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