比赛 |
专项训练十题 |
评测结果 |
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;
}