codeforces 225C Barcode (dp)
来源:互联网 发布:傲剑境界数据 编辑:程序博客网 时间:2024/06/14 02:51
题意:
要求把乱七八糟的图形刷成黑白相间的图形,且每列的颜色必须一样,然后连续的黑或连续的白的列数大于x且小于y。
题解:
非常好的一题。状态不难想。这题看似挺难,那么我们分析下,他要求的是将列全部涂上相同的颜色,那么我可以求出每列涂成黑色和白色要的步数,那么久可以按列dp,相当压缩成一条线,那么可以这样设计状态dp[i][2]
dp[i][0]表示到第i列时是白色的最小步数,同理dp[i][1]表示到第i列时是黑色的最小步数。枚举上个状态的列数i-k 两个状态之间的距离k,k相当于某种颜色的连续个数,控制好k的取值就ok了。
方程:
dp[i][0]=min{ dp[i-k][1]+w[i]-w[i-k] | x<=k<=y && k<=i };
dp[i][1]=min{ dp[i-k][0]+b[i]-b[i-k] | x<=k<=y && k<=i };
#include<iostream>#include<math.h>#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<map>using namespace std;typedef long long lld;const int oo=0x3f3f3f3f;const lld OO=1e18;const int Mod=1000000007 ;const int maxn=1000+5;int dp[maxn][2];char maze[maxn][maxn];int w[maxn],b[maxn];int main(){ int n,m,x,y; int w_sum,b_sum; while(scanf("%d %d %d %d",&n,&m,&x,&y)!=EOF) { for(int i=1;i<=n;i++) scanf("%s",maze[i]+1); w[0]=b[0]=0; for(int j=1;j<=m;j++) { w_sum=b_sum=0; for(int i=1;i<=n;i++) { if(maze[i][j]=='.') w_sum++; else b_sum++; } w[j]=w[j-1]+b_sum; b[j]=b[j-1]+w_sum; } dp[0][0]=dp[0][1]=0; for(int i=1;i<=m;i++) { dp[i][0]=dp[i][1]=oo; for(int k=x;k<=y&&k<=i;k++) { dp[i][0]=min(dp[i-k][1]+w[i]-w[i-k],dp[i][0]); dp[i][1]=min(dp[i-k][0]+b[i]-b[i-k],dp[i][1]); } } printf("%d\n",min(dp[m][0],dp[m][1])); } return 0;}
0 0
- codeforces 225C Barcode (dp)
- Codeforces 225C Barcode【dp】
- Codeforces 225C Barcode DP
- codeforces 225C C. Barcode(dp)
- Codeforces 225C (Barcode)
- CodeForces 225C. Barcode
- CodeForces 225C Barcode
- 【DP】Codeforces Round #139 (Div. 2)225 C Barcode
- Codeforces Round #139 (Div. 2) C. Barcode(DP)
- Codeforces Round #139 (Div. 2)C Barcode DP
- Codeforces Round #139 (Div. 2) C. Barcode
- Codeforces Round #139 (Div. 2)C. Barcode
- CodeForces 467C DP
- Codeforces 156C (DP)
- codeforces 155C dp
- CodeForces 13C DP
- codeforces 431C DP
- CodeForces 687C【DP】
- Ubuntu 14.04 安装搜狗输入法
- opencv: partition应用
- STL中map用法详解
- CentOS下如何安装libevent
- 编译出错:file is universal (4 slices) but does not contain a(n) armv7s slice
- codeforces 225C Barcode (dp)
- SVN上传临时目录导致svn钩子出错提示解决
- JS多级联动下拉列表(不限级数)
- JS获取GET请求中QueryString中的参数
- Linux命令学习:alias
- Hi3518学习:编译osdrv
- UVALive - 3644 - X-Plosives (并查集!!)
- iOS--XMPP文件传输
- altium designer生成gerber文件和NC Drill文件