记录编号 | 344998 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2010]乌龟棋 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C | 运行时间 | 0.327 s | ||
提交时间 | 2016-11-10 18:15:38 | 内存使用 | 9.97 MiB | ||
#include<stdio.h> #include<string.h> int max(int aa,int bb) { if(aa>bb) return aa; else return bb; } int n,m,p[41][41][41][41],l[352],x,i,a,b,c,d,q[10]={0}; int main() { freopen("tortoise.in","r",stdin); freopen("tortoise.out","w",stdout); memset(p,0,sizeof(p)); scanf("%d %d",&n,&m); for(i=0;i<n;i++) scanf("%d",&l[i]);//每步的值 for(i=1;i<=m;i++) { scanf("%d",&x);//每张牌 q[x]++;//几类牌 } p[0][0][0][0]=l[0]; for(a=0;a<=q[1];a++) for(b=0;b<=q[2];b++) for(c=0;c<=q[3];c++) for(d=0;d<=q[4];d++) { if(a>0) p[a][b][c][d]=max(p[a-1][b][c][d]+l[a+b*2+c*3+d*4],p[a][b][c][d]); if(b>0) p[a][b][c][d]=max(p[a][b-1][c][d]+l[a+b*2+c*3+d*4],p[a][b][c][d]); if(c>0) p[a][b][c][d]=max(p[a][b][c-1][d]+l[a+b*2+c*3+d*4],p[a][b][c][d]); if(d>0) p[a][b][c][d]=max(p[a][b][c][d-1]+l[a+b*2+c*3+d*4],p[a][b][c][d]); //p[a][b][c][d]+=l[a+b*2+c*3+d*4]; } printf("%d",p[q[1]][q[2]][q[3]][q[4]]); return 0; }