标签:
30%的数据,满足 1 <= N,M <= 10 ; 0 <= T <= 100 。
100%的数据,满足 1 <= N,M <= 50 ; 0 <= T <= 2500 。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int n,m,t,sum[51],f[51][51],dp[51][2501]; char s[51]; 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‘); for (int j=1;j<=m;j++) for (int x=1;x<=m;x++) { f[x][j]=0; for (int y=0;y<x;y++) f[x][j]=max(f[x][j],f[y][j-1]+max(sum[x]-sum[y],x-y-sum[x]+sum[y])); } for (int j=1;j<=t;j++) { int t=min(m,j); for (int k=1;k<=t;k++) dp[i][j]=max(dp[i][j],dp[i-1][j-k]+f[m][k]); } } printf("%d",dp[n][t]); return 0; }
标签:
原文地址:http://www.cnblogs.com/ws-fqk/p/4643192.html