标签:
30%的数据,满足 1 <= N,M <= 10 ; 0 <= T <= 100 。
100%的数据,满足 1 <= N,M <= 50 ; 0 <= T <= 2500 。
#include<cstdio> #include<algorithm> using namespace std; const int maxn=55,maxt=2505; int mark(int a,int b){ return max(a-b,b); } int n,m,t; int d[maxn][maxn][maxn],f[maxn][maxt]; int c[maxn][maxn]; char s[maxn][maxn]; int getC(){ for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) c[i][j]=c[i][j-1]+s[i][j]-‘0‘; } int getD(){ for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int k=1;k<=m;k++) for(int x=0;x<j;x++) d[i][j][k]=max(d[i][j][k],d[i][x][k-1]+mark(j-x,c[i][j]-c[i][x])); } int getF(){ for(int i=1;i<=n;i++) for(int j=1;j<=t;j++) for(int k=1;k<=m&&k<=j;k++) f[i][j]=max(f[i][j],f[i-1][j-k]+d[i][m][k]); } int main(){ scanf("%d%d%d",&n,&m,&t); for(int i=1;i<=n;i++) scanf("%s",s[i]+1); getC(); getD(); getF(); printf("%d\n",f[n][t]); return 0; }
标签:
原文地址:http://www.cnblogs.com/xkui/p/4531229.html