codeforces round 369div2 C Coloring Trees
来源:互联网 发布:前台数据传到msql乱码 编辑:程序博客网 时间:2024/06/05 15:05
这是一道三维DP题
题目的大意是给定n棵树,有些树有颜色,有些没有,要求给那些没有颜色的树上色,这个人只认识m种颜色,每种颜色有花费
上完色后要看看每棵树的颜色的种类,连续的种类为一个beauty,要你在上完色的时候构成k个beauty并且花费最少。
构建dp[i][j][k]为第i棵树j个beauty选第k个颜色时的花费。
然后暴力dp,时间复杂度是O(n*k*m^2)
其次inf要写的很大,不然就达不到数据。
参考高手的做法这边inf给2000000000000000ll
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 110long long int dp[N][N][N],a[N],b[N][N];#define inf 2000000000000000llint main(){ int k,i,j,n,m,p,x,q; cin>>n>>m>>k; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>b[i][j]; for(i=0;i<=100;i++) for(j=0;j<=100;j++) for(p=0;p<=100;p++) dp[i][j][p]=inf; dp[0][1][0]=0; for(i=0;i<n;i++) for(j=1;j<=k;j++) for(p=0;p<=m;p++){ if(dp[i][j][p]==inf) continue; if(a[i+1]!=0){ if(p==0||a[i+1]==p) dp[i+1][j][a[i+1]]=min(dp[i+1][j][a[i+1]],dp[i][j][p]); if(p!=0&&a[i+1]!=p) dp[i+1][j+1][a[i+1]]=min(dp[i+1][j+1][a[i+1]],dp[i][j][p]); } else if(a[i+1]==0){ for(q=1;q<=m;q++) if(q!=p){ if(p!=0) dp[i+1][j+1][q]=min(dp[i+1][j+1][q],dp[i][j][p]+b[i+1][q]); if(p==0) dp[i+1][j][q]=min(dp[i+1][j][q],dp[i][j][p]+b[i+1][q]); } if(p!=0) dp[i+1][j][p]=min(dp[i+1][j][p],dp[i][j][p]+b[i+1][p]); } } long long int res=inf; for(i=1;i<=m;i++){ //cout<<dp[n][k][i]<<endl; res=min(res,dp[n][k][i]); } if(res==inf) res=-1; cout<<res<<endl; return 0;}
0 0
- codeforces round 369div2 C Coloring Trees
- CodeForces 369 div2 C Coloring Trees DP
- 【Codeforces Round #369 (Div. 2)】Codeforces 711C Coloring Trees
- Codeforces Round #369 (Div. 2) [C] Coloring Trees
- Codeforces Round #369 (Div. 2) C. Coloring Trees
- Codeforces Round #369 (Div. 2) C. Coloring Trees
- [Codeforces Round #369 (Div. 2) C. Coloring Trees] DP
- Codeforces Round #369 (Div. 2) C.Coloring Trees (基础DP)
- codeforces Round #369 (Div. 2) C. Coloring Trees (三维DP)
- Codeforces Round #369 (Div. 2)-C. Coloring Trees
- Codeforces Round #369 (Div. 2) [C] Coloring Trees
- Codeforces Round #369 (Div. 2)C. Coloring Trees
- Codeforces Round #369 (Div. 2)C. Coloring Trees
- Codeforces Round #369 (Div. 2) C. Coloring Trees 三维dp
- Codeforces Round #369 (Div. 2) C. Coloring Trees 动态规划
- codeforces C.Coloring Trees
- codeforces C. Coloring Trees
- Codeforces 369 C. Coloring Trees (dp)
- 查询优化
- mui与后台的交互
- java基础——反射基础知识
- Oracle:PL/SQL--流程控制(三)——循环结构:loop、while-loop、for-loop
- 计算字符串的相似度-两种解法
- codeforces round 369div2 C Coloring Trees
- css中淘宝网的更多三角制作
- Linux Find 命令总结
- poj 1953 World Cup Noise(DP)
- Spring 学习笔记(二)
- Mysql学习第二课
- kafka实践(一):Kafka入门经典教程(转贴)
- Fragment的生命周期
- JavaScript严格模式与非严格模式之间的区别