比赛 练习赛 评测结果 AAAAAAAAAA
题目名称 乌龟棋 最终得分 100
用户昵称 十二12 运行时间 0.259 s
代码语言 C++ 内存使用 29.31 MiB
提交时间 2019-05-22 15:20:39
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int dp[45][45][45][45],a[500],b[500];
int n,m;
int main()
{  freopen("tortoise.in","r",stdin);
   freopen("tortoise.out","w",stdout); 
   cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
	}
	for(int i=1;i<=m;i++)
	{
		int x;
		cin>>x;
		b[x]++;
	}
	
	dp[0][0][0][0]=a[1];
	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 t=0;t<=b[4];t++)
          {
            if(i!=0)
            dp[i][j][k][t]=max(dp[i][j][k][t],dp[i-1][j][k][t]+a[i+j*2+k*3+t*4+1]);
            if(j!=0)
            dp[i][j][k][t]=max(dp[i][j][k][t],dp[i][j-1][k][t]+a[i+j*2+k*3+t*4+1]);
            if(k!=0)
            dp[i][j][k][t]=max(dp[i][j][k][t],dp[i][j][k-1][t]+a[i+j*2+k*3+t*4+1]);
            if(t!=0)
            dp[i][j][k][t]=max(dp[i][j][k][t],dp[i][j][k][t-1]+a[i+j*2+k*3+t*4+1]);
		  }
		  cout<<dp[b[1]][b[2]][b[3]][b[4]];
	return 0;
}