atcoder#ABC145F. [ABC145F] Laminate

[ABC145F] Laminate

题目描述

109 10^9 N N 列の白色グリッドのいくつかのマスを黒く塗って、アートを製作します。
現時点では、左から i i 列目については下から Hi H_i 個のマスを黒く塗り、その列の残りのマスは塗らない予定です。
アートの製作を開始する前に、あなたは K K 個以下の列 (0 0 個でもよい) を選び、それらの列に対する Hi H_i の値を 0 0 以上 109 10^9 以下の好きな整数に変更できます。
変更後の値は列ごとに個別に選べます。

その後、あなたは次の操作を繰り返すことで変更後のアートを製作します。

  • ある行の連続する 1 1 マス以上のマスを選んで黒く塗る。(すでに黒く塗られたマスを再び塗ってもよいが、塗らないことにしたマスを塗ってはならない。)

この操作を最小で何回行う必要があるか求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K H1 H_1 H2 H_2 ... ... HN H_N

输出格式

必要な最小の操作回数を出力せよ。

题目大意

现在有 nn 个柱子排在一起,每个柱子高度为 hih_i

有至多 kk 次机会任意修改某些柱子的高度。

然后,执行操作:每次可以横向消去一段连续的柱子。

问最终消除所有柱子的操作次数至少是多少。

By

https://www.luogu.com.cn/user/556362

4 1
2 3 4 1
3
6 2
8 6 9 1 2 1
7
10 0
1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000
4999999996

提示

制約

  • 1  N  300 1\ \leq\ N\ \leq\ 300
  • 0  K  N 0\ \leq\ K\ \leq\ N
  • 1  Hi  109 1\ \leq\ H_i\ \leq\ 10^9
  • 入力はすべて整数である。

Sample Explanation 1

例えば、H3 H_3 の値を 2 2 に変更した上で以下のような操作を行うと、3 3 回の操作で変更後のアートを製作することができます。 - 下から 1 1 行目の左から 1 1 列目から 4 4 列目までのマスを黒く塗る。 - 下から 2 2 行目の左から 1 1 列目から 3 3 列目までのマスを黒く塗る。 - 下から 3 3 行目の左から 2 2 列目のマスを黒く塗る。