比赛 |
防止颓废的小练习v0.2 |
评测结果 |
AAAAAAAAAA |
题目名称 |
乌龟棋 |
最终得分 |
100 |
用户昵称 |
SOBER GOOD BOY |
运行时间 |
0.052 s |
代码语言 |
C++ |
内存使用 |
12.18 MiB |
提交时间 |
2016-10-18 12:11:52 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=42;
int q[5];
int N,M;
int A[maxn*10];
int f[maxn][maxn][maxn][maxn];
int main()
{
freopen("tortoise.in","r",stdin);
freopen("tortoise.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++)scanf("%d",&A[i]);
int tot=0;
for(int x,i=1;i<=M;i++)
{
scanf("%d",&x);
tot+=x;
q[x]++;
}
// memset(f,-1,sizeof(f));
f[0][0][0][0]=A[1];
for(int a1=0;a1<=q[1];a1++)
for(int a2=0;a2<=q[2];a2++)
for(int a3=0;a3<=q[3];a3++)
for(int a4=0;a4<=q[4];a4++)
{
int &ha=f[a1][a2][a3][a4];
if(!a1&&!a2&&!a3&&!a4)continue;
//ha=A[1];
if(a1>0)
{
ha=max(ha,f[a1-1][a2][a3][a4]+A[1+a1*1+a2*2+a3*3+a4*4]);
}
if(a2>0)
{
ha=max(ha,f[a1][a2-1][a3][a4]+A[1+a1*1+a2*2+a3*3+a4*4]);
}
if(a3>0)
{
ha=max(ha,f[a1][a2][a3-1][a4]+A[1+a1*1+a2*2+a3*3+a4*4]);
}
if(a4>0)
{
ha=max(ha,f[a1][a2][a3][a4-1]+A[1+a1*1+a2*2+a3*3+a4*4]);
}
// ha=max(ha,A[1]);
}
printf("%d",f[q[1]][q[2]][q[3]][q[4]]);
//while(1);
fclose(stdin);
fclose(stdout);
return 0;
}