请dalao指正

P1541 [NOIP2010 提高组] 乌龟棋

百思不得其解
by zhangyuxing @ 2018-01-27 09:19:58


```cpp #include<cstdio> #include<algorithm> using namespace std; int a[10001],b[10001],dp[42][42][42][42]; int main() { int n,m,i,o,j,k,l,x,i1,j1,k1,l1; scanf("%d%d",&n,&m); for(i=1;i<=n;++i)scanf("%d",&a[i]); for(i=1;i<=m;++i) { scanf("%d",&o); b[o]++; } for(i=0;i<=b[1];++i) for(j=0;j<=b[2];++j) for(k=0;k<=b[3];++k) for(l=0;l<=b[4];++l) { if(!i&&!j&&!k&&!l)continue; x=i+j*2+k*3+l*4+1; if(i&&j&&k&&l)dp[i][j][k][l]=max(max(dp[i-1][j][k][l],dp[i][j-1][k][l]),max(dp[i][j][k-1][l],dp[i][j][k][l-1]))+a[x]; if(!i&&j&&k&&l)dp[i][j][k][l]=max(dp[i][j-1][k][l],max(dp[i][j][k-1][l],dp[i][j][k][l-1]))+a[x]; if(i&&!j&&k&&l)dp[i][j][k][l]=max(dp[i-1][j][k][l],max(dp[i][j][k-1][l],dp[i][j][k][l-1]))+a[x]; if(i&&j&&!k&&l)dp[i][j][k][l]=max(max(dp[i-1][j][k][l],dp[i][j-1][k][l]),dp[i][j][k][l-1])+a[x]; if(i&&j&&k&&!l)dp[i][j][k][l]=max(max(dp[i-1][j][k][l],dp[i][j-1][k][l]),dp[i][j][k-1][l])+a[x]; if(!i&&!j&&k&&l)dp[i][j][k][l]=max(dp[i][j][k-1][l],dp[i][j][k][l-1])+a[x]; if(!i&&j&&!k&&l)dp[i][j][k][l]=max(dp[i][j-1][k][l],dp[i][j][k][l-1])+a[x]; if(!i&&j&&k&&!l)dp[i][j][k][l]=max(dp[i][j-1][k][l],dp[i][j][k-1][l])+a[x]; if(i&&!j&&!k&&l)dp[i][j][k][l]=max(dp[i-1][j][k][l],dp[i][j][k][l-1])+a[x]; if(i&&!j&&k&&!l)dp[i][j][k][l]=max(dp[i-1][j][k][l],dp[i][j][k-1][l])+a[x]; if(i&&j&&!k&&!l)dp[i][j][k][l]=max(dp[i-1][j][k][l],dp[i][j-1][k][l])+a[x]; if(i&&!j&&!k&&!l)dp[i][j][k][l]=dp[i-1][j][k][l]+a[x]; if(!i&&j&&!k&&!l)dp[i][j][k][l]=dp[i][j-1][k][l]+a[x]; if(!i&&!j&&k&&!l)dp[i][j][k][l]=dp[i][j][k-1][l]+a[x]; if(!i&&!j&&!k&&l)dp[i][j][k][l]=dp[i][j][k][l-1]+a[x]; } printf("%d",dp[b[1]][b[2]][b[3]][b[4]]+a[1]); return 0; } ```
by zhangyuxing @ 2018-01-27 09:49:34


删帖
by zhangyuxing @ 2018-01-27 09:49:54


已AC
by zhangyuxing @ 2018-01-27 09:50:09


为什么您如此暴力
by 圣地亚哥 @ 2018-06-04 11:14:36


|