#CF711C. 给树涂色
给树涂色
C. 给树涂色
每次测试时间限制: 秒
内存限制: 兆字节
程序员 ZS 和狒狒 Chris 来到了乌代兰!他们在一片有 棵树的公园里散步,决定调皮地把树涂上颜色。树从左到右编号为 到 。
初始时,第 棵树有颜色 。ZS 和 Chris 只认识 种不同的颜色,因此 ,其中 表示第 棵树尚未涂色。
ZS 和 Chris 决定只给未涂色的树(即 的树)涂色。他们可以将每棵树涂成 到 中的任意一种颜色。将第 棵树涂成颜色 需要恰好 升油漆。
他们定义涂色方案的美感为:将全部 棵树分成若干连续同色组(每组包含一段连续且颜色相同的树)所需的最小组数。例如,如果树的颜色从左到右为 ,则美感为 ,因为可以分成 个连续同色组:$\{2\}, \{1,1,1\}, \{3\}, \{2,2\}, \{3\}, \{1\}, \{3\}$。
ZS 和 Chris 希望给所有未涂色的树涂上颜色,使得最终涂色方案的美感恰好等于 。请帮助他们计算出完成任务所需的最小油漆用量(升)。
注意:已经涂色的树不能重新涂色。
输入
第一行包含三个整数 (,)——分别表示树的数量、颜色种数和目标美感。
第二行包含 个整数 (),表示树的初始颜色。若 则表示第 棵树未涂色,否则表示第 棵树已有颜色 。
接下来 行,每行包含 个整数。第 行的第 个数表示 ()——将第 棵树涂成颜色 所需的油漆升数。即使对于已经涂色的树,这些值也会给出,但这些树不能被重新涂色。
输出
输出一个整数,表示所需的最小油漆用量。如果不存在美感恰好为 的有效涂色方案,则输出 。
示例
输入
3 2 2
0 0 0
1 2
3 4
5 6
输出
10
输入
3 2 2
2 1 2
1 3
2 4
3 5
输出
-1
输入
3 2 2
2 0 0
1 3
2 4
3 5
输出
5
输入
3 2 3
2 1 2
1 3
2 4
3 5
输出
0
说明
在第一个样例中,将树涂成颜色 可以最小化油漆用量,总和为 。注意 是无效的,因为这种涂色方案的美感为 (可以将三棵树分成一个同色组 )。
在第二个样例中,所有树都已涂色,但当前涂色方案的美感为 ,因此没有有效的涂色方案,答案为 。
在最后一个样例中,所有树都已涂色,且美感恰好等于 ,因此不需要使用油漆,答案为 。