1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include<algorithm> using namespace std; const int N=105,INF=1<<25; int n,m,k,w[N][N],dp[N][N][5]; inline int () { register int x=0,t=1; register char ch=getchar(); while (ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if (ch=='-') t=-1,ch=getchar(); while (ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar(); return x*t; } void calc() { for(int i=0;i<=n;i++) for(int j=0;j<=k;j++) dp[i][j][0]=dp[i][j][1]=-INF; dp[0][0][0]=0; for(int i=1;i<=n;i++) for(int j=0;j<=k;j++) { dp[i][j][0]=max(dp[i-1][j][1],dp[i-1][j][0]); dp[i][j][1]=dp[i-1][j][1]+w[i][1]; if (j>0) dp[i][j][1]=max(dp[i][j][1],max(dp[i-1][j-1][1],dp[i-1][j-1][0])+w[i][1]); } int ans=-INF; for(int i=0;i<=k;i++) ans=max(ans,max(dp[n][i][0],dp[n][i][1])); printf("%dn",ans); } void solve() { for(int i=0;i<=n;i++) for(int j=0;j<=k;j++) for(int s=0;s<5;s++) dp[i][j][s]=-INF; dp[0][0][0]=0; for(int i=1;i<=n;i++) for(int j=0;j<=k;j++) { for(int s=0;s<5;s++) dp[i][j][0]=max(dp[i][j][0],dp[i-1][j][s]); dp[i][j][1]=max(dp[i-1][j][1],dp[i-1][j][3])+w[i][1]; dp[i][j][2]=max(dp[i-1][j][2],dp[i-1][j][3])+w[i][2]; dp[i][j][3]=dp[i-1][j][3]+w[i][1]+w[i][2]; dp[i][j][4]=dp[i-1][j][4]+w[i][1]+w[i][2]; if (j>0) { for(int s=0;s<5;s++) dp[i][j][1]=max(dp[i][j][1],dp[i-1][j-1][s]+w[i][1]); for(int s=0;s<5;s++) dp[i][j][2]=max(dp[i][j][2],dp[i-1][j-1][s]+w[i][2]); dp[i][j][3]=max(dp[i][j][3],max(dp[i-1][j-1][3],max(dp[i-1][j-1][1],dp[i-1][j-1][2]))+w[i][1]+w[i][2]); for(int s=0;s<5;s++) dp[i][j][4]=max(dp[i][j][4],dp[i-1][j-1][s]+w[i][1]+w[i][2]); } if (j>=2) for(int s=0;s<5;s++) dp[i][j][3]=max(dp[i][j][3],dp[i-1][j-2][s]+w[i][1]+w[i][2]); } int ans=-INF; for(int i=0;i<=k;i++) for(int s=0;s<5;s++) ans=max(ans,dp[n][i][s]); printf("%dn",ans); } int main() { n=read(),m=read(),k=read(); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) w[i][j]=read(); if (m==1) calc();else solve(); return 0; }
|
近期评论