现在的位置: 首页 > 综合 > 正文

2650: 礼物

2013年11月21日 ⁄ 综合 ⁄ 共 1751字 ⁄ 字号 评论关闭
文章目录

2650: 礼物


Result TIME Limit MEMORY Limit Run Times AC Times JUDGE
3s 8192K 153 26 Standard

10*10的格子(1,1)-(10,10)。一个人开始(0秒)站在(1,1)点。每秒他最多可以移动v个格子(但是只能是上下左右,不可以斜着移动)。每一秒钟,天空中会有礼物落下来。当这个人这一秒移动结束后停在某一个格子中,他就可以得到这一秒落到这个格子里的所有礼物。时间一共有t秒。由于礼物的价值是不同的。他想让收集到的礼物价值和最大。请你编程输出他所得到礼物价值和的最大值。

Input

多组输入,每组如下:

第一行v,t,m。表示每秒最多移动v个格子,时间共t秒(1 <=t <= 100),一共会落下m件礼物。

以下m行每行为time,x,y,c。表示在time秒(1<=time<=t),(x,y)格子会有价值为c(正整数)的礼物落下。 v=t=m=0表示输入结束,你不必处理此行。

Output

每组一行,一个整数表示得到礼物的最大价值。

Sample Input

9 2 2
1 1 1 10
2 10 10 100
0 0 0

Sample Output

100

 


This problem is used for contest: 160 

 

 

#include<stdio.h>
#include<string.h>
int v,t,m;
int a[150][15][15],val[150][15][15];
int abs(int x){ return x>0?x:-x;}
int dfs(int t,int x,int y)
{
     if(a[t][x][y]!=-1) return a[t][x][y];
    // printf("t::::%d  x:::::%d   y::::%d/n",t,x,y);
   //  printf("****val[t][x][y]%d     a[t][x][y]%d/n",val[t][x][y],a[t][x][y]);
    int i,j,k,xx,yy;
    if(t==1)
    {
        if(abs(x-1)+abs(y-1)<=v)      return val[1][x][y];
        else return -123456789;
    }
    int max=1<<31;
    for(xx=1;xx<=10;xx++)
    {
        for(yy=1;yy<=10;yy++)
        {
            if(abs(xx-x)+abs(yy-y)<=v)
            {
                int temp=dfs(t-1,xx,yy);
                if(temp>max) max=temp;
            }
        }
    }
    a[t][x][y]=max+val[t][x][y];
   // printf("%d>>>>>/n",a[t][x][y]);
    return a[t][x][y];
}
int main()
{
    int i,j,k;
    while(scanf("%d%d%d",&v,&t,&m)==3,v||t||m)
    {
        memset(a,-1,sizeof(a));
        memset(val,0,sizeof(val));
        for(i=0;i<m;i++)
        {
            int q,w,e,r;
            scanf("%d%d%d%d",&q,&w,&e,&r);
            val[q][w][e]+=r;
        }
        int max=0;
       //printf("%d../n",dfs(t,10,10));
        for(k=1;k<=t;k++) for(i=1;i<=10;i++) for(j=1;j<=10;j++)
        {
            if(dfs(k,i,j)>max) max=dfs(k,i,j);
        }
        printf("%d/n",max);
    }
    return 0;
}
/*
2 3 3
1 1 1 10
2 2 2 50
3 10 10 1000
*/
 

抱歉!评论已关闭.