记录编号 | 410925 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2010]乌龟棋 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.002 s | ||
提交时间 | 2017-06-02 21:46:03 | 内存使用 | 3.02 MiB | ||
#include<iostream> #include<cstdio> #include<cctype> using namespace std; inline void in(int &x){ x=0;int f=1;char t=getchar(); while(!isdigit(t)){if(t=='-')f=-1;t=getchar();} while(isdigit(t)){x=x*10+t-48;t=getchar();} x*=f; } const int maxn=360; const int maxm=160; int n,m; int a[maxn],ci,c[5],f[maxm/4][maxm/4][maxm/4][maxm/4]; inline void dpwork(){ for(int i=0;i<=c[1];i++) for(int j=0;j<=c[2];j++) for(int k=0;k<=c[3];k++) for(int l=0;l<=c[4];l++){ if(i) f[i][j][k][l]=max(f[i-1][j][k][l],f[i][j][k][l]); if(j) f[i][j][k][l]=max(f[i][j-1][k][l],f[i][j][k][l]); if(k) f[i][j][k][l]=max(f[i][j][k-1][l],f[i][j][k][l]); if(l) f[i][j][k][l]=max(f[i][j][k][l-1],f[i][j][k][l]); f[i][j][k][l]+=a[i+j*2+k*3+l*4+1]; } printf("%d",f[c[1]][c[2]][c[3]][c[4]]); } inline void work(){ in(n);in(m); for(int i=1;i<=n;i++) in(a[i]); for(int i=1;i<=m;i++) in(ci),c[ci]++; dpwork(); } inline int mian(){ freopen("tortoise.in","r",stdin); freopen("tortoise.out","w",stdout); work(); } int miku=mian(); int main(){;}