zoukankan      html  css  js  c++  java
  • [BZOJ1296][SCOI2009]粉刷匠(DP)

    每一行做一个DP,然后整体矩阵做一次DP即可

    好惨啊,三目运算符记得要加括号

    Code

    #include <cstdio>
    #include <algorithm>
    #define N 66
    using namespace std;
    int n,m,T,f[N][N*N],g[N][N],sum[N],Ans;
    char s[N];
    int main(){
    	scanf("%d%d%d",&n,&m,&T);
    	for(int i=1;i<=n;++i){
    		scanf("%s",s+1);
    		for(int j=1;j<=m;++j) sum[j]=sum[j-1]+((s[j]=='1')?1:0);
    		for(int j=1;j<=m;++j)
    			for(int k=1;k<=m;++k){
    				g[k][j]=0;
    				for(int l=0,x;l<k;++l){
    					x=sum[k]-sum[l];
    					g[k][j]=max(g[k][j],g[l][j-1]+max(x,k-l-x));	
    				}
    			}
    		for(int j=1;j<=T;++j)
    			for(int k=1,x=min(j,m);k<=x;++k)
    				f[i][j]=max(f[i][j],f[i-1][j-k]+g[m][k]);
    	}
    	for(int i=1;i<=T;++i) Ans=max(Ans,f[n][i]);
    	printf("%d
    ",Ans);
    	return 0;
    }
    
  • 相关阅读:
    3.16
    3.8
    3.7
    3.6
    3.5
    3.3
    3.2
    《机器学习十讲》学习报告一
    机器学习-集成算法
    机器学习-基于核的算法
  • 原文地址:https://www.cnblogs.com/void-f/p/9133751.html
Copyright © 2011-2022 走看看