题目链接:http://codeforces.com/problemset/problem/711/C

O(n^4)的复杂度,以为会超时的

思路:dp[i][j][k]表示第i棵数用颜色k涂完后beauty为j

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf=1e15;
int c[105];
int p[105][105];
ll dp[105][105][105];
int main()
{
int n,m,b;
scanf("%d%d%d",&n,&m,&b);
for(int i=1;i<=n;i++)
scanf("%d",&c[i]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d",&p[i][j]);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=b;j++)
{
for(int k=1;k<=m;k++)
dp[i][j][k]=inf;
}
}
for(int i=1;i<=n;i++)
{
if(c[i])
{
for(int j=1;j<=b&&j<=i;j++)
{
int k=c[i];
ll min1=inf,min2=inf;
if(k>1&&j>1)
min1=*min_element(dp[i-1][j-1]+1,dp[i-1][j-1]+k);
if(k<m&&j>1)
min2=*min_element(dp[i-1][j-1]+k+1,dp[i-1][j-1]+m+1);
dp[i][j][k]=min(dp[i-1][j][k],min(min1,min2));
}
}
else
{
for(int j=1;j<=b&&j<=i;j++)
{
for(int k=1;k<=m;k++)
{
ll min1=inf,min2=inf;
if(k>1&&j>1)
min1=*min_element(dp[i-1][j-1]+1,dp[i-1][j-1]+k);
if(k<m&&j>1)
min2=*min_element(dp[i-1][j-1]+k+1,dp[i-1][j-1]+m+1);
dp[i][j][k]=p[i][k]+min(dp[i-1][j][k],min(min1,min2));
}
}
}
}
ll ans=*min_element(dp[n][b]+1,dp[n][b]+m+1);
if(ans<inf)
printf("%I64d\n",ans);
else
printf("-1\n");
return 0;
}

codeforces 711C Coloring Trees(DP)的更多相关文章

  1. Codeforces Round #369 (Div. 2) C. Coloring Trees(dp)

    Coloring Trees Problem Description: ZS the Coder and Chris the Baboon has arrived at Udayland! They ...

  2. Codeforces Round #369 (Div. 2) C. Coloring Trees (DP)

    C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  3. 【CF711C】Coloring Trees(DP)

    题意:给你n个数字,一共有m种,如果某数为0则该数为空,空的地方可以填任意种类数,但每填一个数字都要花费一定的费用, 从头到尾,所有相邻且相同的数字看作一个集合,求使n个数字的集合数为k所需的最小费用 ...

  4. Codeforces Gym101341K:Competitions(DP)

    http://codeforces.com/gym/101341/problem/K 题意:给出n个区间,每个区间有一个l, r, w,代表区间左端点右端点和区间的权值,现在可以选取一些区间,要求选择 ...

  5. CodeForces 711C Coloring Trees (DP)

    题意:给定n棵树,其中有一些已经涂了颜色,然后让你把没有涂色的树涂色使得所有的树能够恰好分成k组,让你求最少的花费是多少. 析:这是一个DP题,dp[i][j][k]表示第 i 棵树涂第 j 种颜色恰 ...

  6. 【Codeforces】CF 9 D How many trees?(dp)

    题目 传送门:QWQ 分析 用$ dp[i][j] $表示用i个节点,有多少深度小于等于j的二叉树. 答案是$ dp[n][n] - dp[n][h-1] $ 转移时枚举左子树的节点数量,就可以知道右 ...

  7. codeforces#1154F. Shovels Shop (dp)

    题目链接: http://codeforces.com/contest/1154/problem/F 题意: 有$n$个物品,$m$条优惠 每个优惠的格式是,买$x_i$个物品,最便宜的$y_i$个物 ...

  8. Codeforces 1051 D.Bicolorings(DP)

    Codeforces 1051 D.Bicolorings 题意:一个2×n的方格纸,用黑白给格子涂色,要求分出k个连通块,求方案数. 思路:用0,1表示黑白,则第i列可以涂00,01,10,11,( ...

  9. Codeforces 1207C Gas Pipeline (dp)

    题目链接:http://codeforces.com/problemset/problem/1207/C 题目大意是给一条道路修管道,相隔一个单位的管道有两个柱子支撑,管道柱子高度可以是1可以是2,道 ...

随机推荐

  1. [转]ebkit内核浏览器的Linear Gradients (线性渐变)

    转自:http://www.css88.com/archives/tag/webkit-gradient webkit内核的safari. Chrome的Linear Gradients (线性渐变) ...

  2. 关于位域如何节省内存(C++)

    位域:  最先使用在c语言中后来C++继承了这一优良的特点. 举个栗子:     int  -->  4字节   2^32位 ,如果我们只需要其表达一个0~16的数字, 使用一个int就显得稍稍 ...

  3. 意外的节点类型 Element。只能在简单内容或空内容上调用 ReadElementString 方法

    问题出现的情景: 在调用携程团购接口时,需要把获取的xml字符串反序列化实体对象,出现了这个错误. 详情: 在对xml文档有这样一条语句“ <Description Category=" ...

  4. 下载模板,上传EXCEL

    说道SAP里对EXCEL操作的大概就是上传,下载,显示了... 下载:(文档是通过SMW0上传的)注:如果下载的时候需要填充EXCEL的值,...请参考另一篇文档,OLE CALL METHOD CL ...

  5. express+nodecoffee写passport登录验证实例(二)

    二:实现登录认证 passport官网文档:  http://passportjs.org/guide/ passport验证使用一种被称为“策略”的方式来验证请求,策略支持3种类型的验证:用户名密码 ...

  6. BZOJ1738 [Usaco2005 mar]Ombrophobic Bovines 发抖的牛

    先预处理出来每个点对之间的最短距离 然后二分答案,网络流判断是否可行就好了恩 /************************************************************ ...

  7. java入门第四步之应用服务器的安装(Tomcat)【转】

    首先打开myeclipse,在myeclipse菜单栏下面有两个按钮: 左边的按钮是进行项目的部署的(即将项目部署到服务器上),右边的按钮是进行服务器的启动的,如果你安装了tomcat服务器,那你就可 ...

  8. Java:标示符 基本数据类型

    标示符: 在程序中自定义的一些名称,例如:变量.类名.方法名…… 组成有数字0~9.大小写英文字母.“$”和下划线“_”组成,且不能由数字开头,以及不能使用java已使用和保留的关键字. Java中的 ...

  9. (转)mysql的增删改查

    MySQL数据库的增删改查. 1,首先启动mysql数据库的服务,在运行的窗口中输入:net start mysql,这样,就可 以启动mysql数据库的服务,同理,输入net stop mysql, ...

  10. 使用Chef管理windows集群 | 运维自动化工具

    但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...