比赛 专项训练十题 评测结果 AAAAAAAAAA
题目名称 乌龟棋 最终得分 100
用户昵称 CSU_Turkey 运行时间 0.076 s
代码语言 C++ 内存使用 24.16 MiB
提交时间 2017-05-30 20:00:10
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int dp[50][50][50][50],n,m,cost[360],ans[5],l;
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",&cost[i]);
	for(int i=1;i<=m;i++)
	scanf("%d",&l),
	ans[l]++;
	dp[0][0][0][0]=0;
	for(int a=0;a<=ans[1];a++)
	for(int b=0;b<=ans[2];b++)
	for(int c=0;c<=ans[3];c++)
	for(int d=0;d<=ans[4];d++)
	{
		int tem1=max(dp[a][b][c][max(d-1,0)],dp[a][b][max(c-1,0)][d]);
		int tem2=max(dp[a][max(b-1,0)][c][d],dp[max(a-1,0)][b][c][d]);
	    int tem3=max(tem1,tem2);
		dp[a][b][c][d]=max(dp[a][b][c][d],tem3+cost[a*1+b*2+c*3+d*4+1]);
	}
	cout<<dp[ans[1]][ans[2]][ans[3]][ans[4]];
	return 0;
}