记录编号 |
344998 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010]乌龟棋 |
最终得分 |
100 |
用户昵称 |
hummertime |
是否通过 |
通过 |
代码语言 |
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;
}