记录编号 328101 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010]乌龟棋 最终得分 100
用户昵称 Gravatarkilometer 是否通过 通过
代码语言 C 运行时间 0.085 s
提交时间 2016-10-23 18:53:04 内存使用 10.06 MiB
显示代码纯文本
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

int max(int a,int b);
int f[40][40][40][40];
int main()  
{  
	freopen("tortoise.in","r",stdin);
	freopen("tortoise.out","w",stdout);
	int m,n;
	int sum[5]={0};
	int a[400];
    int i,j,k,t,x; 
	memset(f,0,sizeof(0));
	
	scanf("%d%d",&n,&m);  	
    for(i=1;i<=n;i++) 
	scanf("%d",&a[i]);  
    for(i=1;i<=m;i++) 
	{
		scanf("%d",&x);
		sum[x]++;
	}  
    f[0][0][0][0]=a[1];  
    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]=max(f[i][j][k][t],f[i-1][j][k][t]+a[1+i*1+j*2+k*3+t*4]);  
                    if(j>=1)f[i][j][k][t]=max(f[i][j][k][t],f[i][j-1][k][t]+a[1+i*1+j*2+k*3+t*4]);  
                    if(k>=1)f[i][j][k][t]=max(f[i][j][k][t],f[i][j][k-1][t]+a[1+i*1+j*2+k*3+t*4]);  
                    if(t>=1)f[i][j][k][t]=max(f[i][j][k][t],f[i][j][k][t-1]+a[1+i*1+j*2+k*3+t*4]);  
                }  
    printf("%d",f[sum[1]][sum[2]][sum[3]][sum[4]]);  
    return 0;  
}  

int max(int a,int b)
{
	if(a<b)
	{
		return(b);
	}	
	else
		return(a);
}