問題
提出コード
解法
シフトという操作が少しわかりづらいのですが、結局は
- 任意の要素を取り出し、別の任意の位置に挿入する(現時点より左に挿入するならコストは、右であれば)
という操作ができることになります。
ので、それぞれの要素を、 右側に移動してそろえる、左側に移動してそろえる、操作しない、の3パターンに割り振ればよいです。
右側に操作するか左側に操作するか、というのは、今作成中の順列で操作しなかった要素の右端を見ればよいです。
番目の要素まで並べた上で、操作しなかった要素の右端がであるようなもののなかで可能な最小コスト
とします。
という遷移を行えばよいです。
が初期値、が答えです。