问题 5561 --虎哥涂色5561: 虎哥涂色★★★★★
时间限制: 1 Sec 内存限制: 128 MB
提交: 34 解决: 28
[提交][状态][命题人:]题目描述
有n棵树,m种颜料,要求现在要给这些树涂上颜料,最后涂成k段(连续颜色相同划为一段如2,1,1,1,3,2,2,3,1,3是7段),有些树已经涂了,则不能涂了。每棵只能涂一次,输入n个数(每个数为0~m),0表示还没有涂,1~m表示已经涂了哪种颜料。接下来输入n行m列,表示每棵树涂成每种颜色所要的颜料量。现在要把所有树都涂上颜料涂成k段,求最少要用的颜料量。
输入
第一行有三个整数n,m和k (1≤k≤n≤100,1≤m≤100) —分别表示树的数量、颜色的数量和段数。
第二行有n个整数c1,c2,...,cn(0 ≤ ci ≤ m),表示每棵树初始颜色,ci为0,表示第i棵树还未涂色,否则表示第i棵树的颜色为ci。
接下n行,每行包含有m个整数,i行j列的数pi,j(1≤pi,j≤1e9) — 表示第i棵树涂成颜色j所需要的颜料数量。
输出
仅输出一个整数,即把所有树都涂上颜料并且涂成k段,最少需用的颜料量。
提示
样例2
输入:
3 2 2
2 1 2
1 3
2 4
3 5
输出:
-1
样例3
输入:
3 2 2
2 0 0
1 3
2 4
3 5
输出:
5
样例4
输入:
3 2 3
2 1 2
1 3
2 4
3 5
输出:
0
第一个样例中,将树涂成2,1,1得到最少颜色量,其值为2+3+5=10。注意涂成1、1、1,则组成了一段颜色,不符合样例要求的2段,因此是非法的。
第二个样例中,所有的树都已经涂色了并且涂成了3段,因此答案为-1。
最后一个样例中,所有的树都已经涂色了,并且涂成了3段,因此不需要再涂了,答案为0。
来源
[提交][状态]