【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

f[i][j][k]前i个位置,第i个位置放j这个颜色,然后形成了k个联通块的最小花费
分第i个位置有没有已经放颜色两种情况考虑。
如果有放的话。枚举前一个位置的颜色以及前i-1个位置形成的联通块的数目
如果没有放的话。枚举当前以及前一个的颜色以及前i-1个位置形成的联通块数目
有放不用加代价。
没有放的话加上放的代价就会。

最后在f[n][1..m][k]里面找最小值

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 100; int n,m,k,c[N+10],p[N+10][N+10];
long long f[N+10][N+10][N+10]; void get_min(long long &x,long long y){
if (x==-1) x = y;
if (y<x) x = y;
} int main()
{
#ifdef LOCAL_DEFINE
freopen("D:\\rush.txt","r",stdin);
#endif // LOCAL_DEFINE ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> m>>k;
for (int i = 1;i <= n;i++) cin >> c[i];
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
cin >> p[i][j];
memset(f,255,sizeof f);
f[0][0][0] = 0;
for (int i = 1;i <= n;i++){
if (c[i]!=0){
//第i个位置的颜色已经固定。
//枚举前一个的颜色
for (int j = 0;j <= m;j++)
for (int k = 0;k <= i-1;k++)
if (f[i-1][j][k]!=-1){
if (j!=c[i]){
get_min(f[i][c[i]][k+1],f[i-1][j][k]);
}else{
get_min(f[i][c[i]][k],f[i-1][j][k]);
}
}
}else{
//这一个的颜色和前一个的颜色都要枚举
for (int j = 1;j <= m;j++)
for (int jj = 0;jj <= m;jj++)
for (int k = 0;k <= i-1;k++){
if (f[i-1][jj][k]!=-1){
if (j!=jj){
get_min(f[i][j][k+1],f[i-1][jj][k]+p[i][j]);
}else{
get_min(f[i][j][k],f[i-1][jj][k]+p[i][j]);
}
}
}
}
}
//f[n][1..m][k]
long long ans = -1;
for (int i = 1;i <= m;i++)
if (f[n][i][k]!=-1)
get_min(ans,f[n][i][k]);
cout<<ans<<endl;
return 0;
}

最新文章

  1. .Net判断一个对象是否为数值类型
  2. JavaScript入门篇QA总结
  3. webapp 侧边导航效果
  4. C# csv 操作类
  5. css3 的content 属性
  6. python ciscolib模块
  7. SQL从入门到基础 - 06 限制结果集范围
  8. 【转】Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
  9. 进击的Android注入术《二》
  10. 本地修改js代码并时时生效的解决办法
  11. 【Android Developers Training】 74. 序言:通过无线连接设备
  12. 如何解决jQuery easyui中locale文件下easyui-lang-zh_CN中文乱码问题
  13. webpack学习(二):先写几个webpack基础demo
  14. Cannot change version of project facet Dynamic Web Module to 2.5的解决
  15. 连接Redis_五种数据格式
  16. sql 将某一列转成字符串并且去掉最后一个逗号
  17. 历届试题 大臣的旅费-(树的直径+dfs)
  18. 修改Windows和linux系统时间
  19. DIV CSS 绘制风车
  20. 03_Kafka集群操作

热门文章

  1. Java开源框架 iBase4J 搭建笔记
  2. C#中的全局程序集缓存定义
  3. hdoj 5092 Seam Carving 【树塔DP变形 + 路径输出】 【简单题】
  4. 回车登录(支持IE 和 火狐等浏览器)
  5. BZOJ 2435: [Noi2011]道路修建 dfs搜图
  6. keras中使用预训练模型进行图片分类
  7. 英语发音规则---N字母
  8. AngularJS 下拉列表demo
  9. poj--3169--Layout(简单差分约束)
  10. JavaScript学习笔记——对象的创建