比赛 专项训练十题 评测结果 AAAAAAAAAA
题目名称 乌龟棋 最终得分 100
用户昵称 皓芷 运行时间 0.073 s
代码语言 C++ 内存使用 11.09 MiB
提交时间 2017-06-02 19:49:38
显示代码纯文本
#include<cstdio>
#include<iostream>
#define mysister
#define maxn 351
using namespace std;
int n,m,a[maxn],b[4],f[41][41][41][41],u;
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]);
	for(int i=1;i<=m;i++)
	{
	  scanf("%d",&u);
	  b[u]++;
	}
	for(int i=0;i<=b[1];i++)
	  for(int j=0;j<=b[2];j++)
	    for(int k=0;k<=b[3];k++)
	      for(int l=0;l<=b[4];l++)
	      {
	      	if(i)f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k][l]);
	      	if(j)f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l]);
	      	if(k)f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-1][l]);
	      	if(l)f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-1]);
	      	f[i][j][k][l]+=a[i+2*j+3*k+4*l+1];
		  }
	printf("%d",f[b[1]][b[2]][b[3]][b[4]]);
	return 0;
}