HDOJ 1176

免费馅饼

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13077 Accepted Submission(s): 4328

Problem Description

都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:

为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼)

 

 

Input

输入数据有多组。每组数据的第一行为以正整数n(0<n<100000),表示有n个馅饼掉在这条小径上。在结下来的n行中,每行有两个整数x,T(0<T<100000),表示在第T秒有一个馅饼掉在x点上。同一秒钟在同一点上可能掉下多个馅饼。n=0时输入结束。

 

 

Output

每一组输入数据对应一行输出。输出一个整数m,表示gameboy最多可能接到m个馅饼。
提示:本题的输入数据量比较大,建议用scanf读入,用cin可能会超时。

 

 

Sample Input

6 5 1 4 1 6 1 7 2 7 2 8 3 0

 

 

Sample Output

4

 

 

Author

lwg

//这个是完全copy,我要学习下

#include<stdio.h>
#include<string.h>
#define M 100001
int n;
int x;//位置
int T;//时间
int time;
int number[M][13];
int max2(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
int max3(int a,int b,int c)
{
    if(max2(a,b)>max2(b,c))
        return max2(a,b);
    return max2(b,c);
}
int main()
	{
    while (scanf("%d", &n)==1 && n)
		 {
        memset(number, 0, sizeof (number));//初始化数组
        time = 0;
        while(n--){
            scanf("%d %d", &x, &T);//读取数据
            number[T][x + 1]++;//时间做数塔纵轴,位置+1做数塔横轴,问题转化为经典数塔问题
            if (T > time)//确定最大时间
                time = T;
        }
        for (int i = time - 1; i >= 0; i--){
            for (int j = 11; j >=1; j--) {
                number[i][j] += max3(number[i+1][j],number[i+1][j-1],number[i+1][j+1]);//对熟悉的数塔问题进行操作,注意下面的三个位置都能操作
            }
        }
        printf("%d\n", number[0][6]);//输出结果
    }
    return 0;
}

 

时间: 2024-09-28 09:19:30

HDOJ 1176的相关文章

最大匹配-HDOJ 2458 Kindergarten

HDOJ 2458 Kindergarten Description In a kindergarten, there are a lot of kids. All girls of the kids know each other and all boys also know each other. In addition to that, some girls and boys know each other. Now the teachers want to pick some kids 

最大匹配-HDOJ 1068

HDOJ 1068 Girls and Boys . Problem Description the second year of the university somebody started a study on the romantic relations between the students. The relation "romantically involved" is defined between one girl and one boy. For the study

hdoj 1007 两点之间最短距离的二分之一 提交之后超时了 求c语言解法 感激不敬

问题描述 hdoj 1007 两点之间最短距离的二分之一 提交之后超时了 求c语言解法 感激不敬 #include"stdio.h" #include"math.h" int main() { int n,i,j; double s; while(scanf("%d",&n)&&n) { double a[100000][5]={0}; for(i=0;i<n;i++) for(j=0;j<2;j++) sca

HDOJ/HDU 1161 Eddy&amp;#39;s mistakes(大写字母转换成小写字母)

Problem Description Eddy usually writes articles ,but he likes mixing the English letter uses, for example "computer science" is written frequently "coMpUtEr scIeNce" by him, this mistakes lets Eddy's English teacher be extremely disco

HDOJ 2057 A + B Again

Problem Description There must be many A + B problems in our HDOJ , now a new one is coming. Give you two hexadecimal integers , your task is to calculate the sum of them,and print it in hexadecimal too. Easy ? AC it ! Input The input contains severa

HDOJ 2033 人见人爱A+B

Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的最爱,希望今天的这个A+B能给大家带来好运,也希望这个题目能唤起大家对ACM曾经的热爱. 这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒. Input 输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,

HDOJ 1001Sum Problem

Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + - + n. Input The input will consist of a series of integers n, one integer per line. Output For each ca

公司经理贪污下岗职工1176万元福利购豪宅

企业破产了,企业领导却贪污了破产企业300多名下岗职工1176万元的福利,为自己购买豪宅.2008年,广州市检察机关查办了某工业物资供销广州公司的贪污"窝案",涉案5人均被判刑.昨日,广州市检察院公布该案. 据悉,该案主犯公司经理孙先才(正处级),因贪污1176万元,挪用公款63万元,被判处无期徒刑,剥夺政治权利终身,并处罚金300万元. 据查明,2000年以来,该公司经营状况不佳,于2005年底正式破产,期间,职工每个月只能领到几百元的工资,有时连医药费的报销都无法保障. 就是在这样

HDOJ 1316

点击打开链接 首先打表,然后就是比较了,比较恶心了一点,注意用compare比较 8  12会有 8>12,注意一下比较函数 测试数据: input: 83 346930886 77 214636915 93 424238335 86 149760492 49 189641421 62 350490027 ouput : 32 31 31 30 32 32 代码: #include<iostream> #include<cstring> #include<cstdio&