AtCoder Beginner Contest 275 F問題 Erase Subarrays
問題
提出解答
問題の概要
長さ の整数列 が与えられる.
に対して, 次の問題を解け.
- から連続部分列を選び, その部分を削除することを 回以上行い, 残った整数列における整数の総和を にすることは可能か? 可能ならば操作回数の最小値を求めよ.
制約
解法
連続部分列を削除する代わりに, に置き換えるとしても答えは変わらない. 以降ではこのようにする.
次のような動的計画法を考える. を
- 第 項目まで見たとき, 項目を に (: : する/ : しない) 場合における操作の最小値 (存在しない場合は ).
ベースケースは のときで,
である. 更新式について, 上のようにベースケースを定めたので, 項目が , 項目が の場合に新たな操作が必要になることに着目すると,
である.
に対して, を答えれば良い.
計算量は 時間である.