状态: Unaccepted
测评机: Xeost[5]
得分: 0分
提交日期: 2012-7-25 17:10:00
有效耗时: 该状态没有记录
测试结果1: 选手程序无输出
测试结果2: 选手程序无输出
测试结果3: 选手程序无输出
测试结果4: 选手程序无输出
测试结果5: 选手程序无输出
测试结果6: 选手程序无输出
测试结果7: 选手程序无输出
测试结果8: 选手程序无输出
测试结果9: 选手程序无输出
测试结果10: 选手程序无输出
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define maxn 350+10
#define maxm 120+10
int n,m,sum[6],a[maxn],f[maxm][maxm][maxm][maxm];
void init()
{
freopen("rqn599.in","r",stdin);
freopen("rqn599.out","w",stdout);
}
void read()
{
scanf("%d%d",&n,&m);
int i,x;
memset(sum,0,sizeof(sum));
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<=m;i++) {scanf("%d",&x);sum[x]++;}
}
void work()
{
int i,j,k,t;
for(i=0;i<=sum[1];i++)
for(j=0;j<=sum[2];j++)
for(k=0;k<=sum[3];k++)
for(t=0;t<=sum[4];t++)
{
if(i>=1) f[i][j][k][t]>?=f[i-1][j][k][t]+a[i+j*2+k*3+t*4];
if(j>=1) f[i][j][k][t]>?=f[i][j-1][k][t]+a[i+j*2+k*3+t*4-1];
if(k>=1) f[i][j][k][t]>?=f[i][j][k-1][t]+a[i+j*2+k*3+t*4-2];
if(t>=1) f[i][j][k][t]>?=f[i][j][k][t-1]+a[i+j*2+k*3+t*4-3];//计算起点得分
}
printf("%d",f[sum[1]][sum[2]][sum[3]][sum[4]]+a[n]);//加上最后终点得分
}
int main()
{
//init();
read();
work();
return 0;
}
你空间开的太大了,60就可以了,否则100^4空间是很大的,不可能运行得起来,所以无输出,降下来就好了。