首页 > 其他分享 >(hdu step 3.2.7)免费馅饼(数塔变形:求所能接到馅饼的最大数)

(hdu step 3.2.7)免费馅饼(数塔变形:求所能接到馅饼的最大数)

时间:2023-05-07 21:32:14浏览次数:39  
标签:hdu 小径 最大数 int 位置 馅饼 gameboy 接到


题目:


免费馅饼

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 1207 Accepted Submission(s): 508

 

Problem Description


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


(hdu step 3.2.7)免费馅饼(数塔变形:求所能接到馅饼的最大数)_#include


为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在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



65 14 16 17 27 28 30



 

Sample Output



4



 

Author


lwg



题目分析:

              二维动态规划。数塔变形。状态转移方程为:f[i][j] =  max(f[i-1][j-1],f[i-1][j],f[i-1][j+1]) + a[i][j]。其中f[i][j]表示的是:第i秒在第j个位置上所能接到的最大馅饼数。a[i][j]表示到第i秒为止在第j个位置上跌落的馅饼的数量。


代码如下:


/*
 * f.cpp
 *
 *  Created on: 2015年2月11日
 *      Author: Administrator
 */


#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 100005;

int a[maxn][12];
int f[maxn][12];

int maxT;

int dp(){
	int i;
	int j;
	int maxSum = -9;//最后所能接到的最大馅饼数

	f[1][4] = a[1][4];//第1秒第4个位置所能接到的最大馅饼数==第一秒第4个位置掉下的馅饼数
	f[1][5] = a[1][5];
	f[1][6] = a[1][6];
	for(i = 2 ; i <= maxT ; ++i){
		for(j = 0 ; j < 11 ; ++j){
			f[i][j] = f[i-1][j];

			if(j > 0){
				f[i][j] = max(f[i][j],f[i-1][j-1]);
			}


			if(j < 10){
				f[i][j] = max(f[i][j],f[i-1][j+1]);
			}

			f[i][j] += a[i][j];
		}
	}

	//求求出各个状态中的最大值
	for(i = 1 ; i <= maxT ; ++i){
		for(j = 0 ; j < 11 ; ++j){
			if(maxSum < f[i][j]){
				maxSum = f[i][j];
			}
		}
	}

	return maxSum;
}


int main(){
	int n;
	while(scanf("%d",&n)!=EOF,n){
		memset(a,0,sizeof(a));
		memset(f,0,sizeof(f));


		int i;
		for(i = 1 ; i <= n ; ++i){
			int x,t;
			scanf("%d%d",&x,&t);
			a[t][x]++;

			maxT = max(maxT,t);
		}

		printf("%d\n",dp());
	}

	return 0;
}





标签:hdu,小径,最大数,int,位置,馅饼,gameboy,接到
From: https://blog.51cto.com/u_5290007/6252591

相关文章

  • hdu 1599 find the mincost route(无向图的最小环:求从一个点遍历所有节点以后回到原点
    题目:findthemincostrouteTimeLimit:1000/2000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):2801    AcceptedSubmission(s):1115ProblemDescription杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游......
  • 拼接最大数(栈、贪心)、发奖金问题、二叉搜索树迭代器(栈、树)
    拼接最大数(栈、贪心)给定长度分别为m和n的两个数组,其元素由0-9构成,表示两个自然数各位上的数字。现在从这两个数组中选出k(k<=m+n)个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大......
  • Linux 进程调度之schdule主调度器
    考虑到文章篇幅,在这里我只讨论普通进程,其调度算法采用的是CFS(完全公平)调度算法。至于CFS调度算法的实现后面后专门写一篇文章,这里只要记住调度时选择一个优先级最高的任务执行一、调度单位简介1.1task_struct结构体简介对于Linux内核来说,调度的基本单位是任务,用structtask......
  • HDU 2108 Shape of HDU (判断凹凸)
    ShapeofHDUTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):10350    AcceptedSubmission(s):4796ProblemDescription话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,“徐队”......
  • 力扣---1679. K 和数对的最大数目
    给你一个整数数组nums和一个整数k。每一步操作中,你需要从数组中选出和为k的两个整数,并将它们移出数组。返回你可以对数组执行的最大操作数。 示例1:输入:nums=[1,2,3,4],k=5输出:2解释:开始时nums=[1,2,3,4]:-移出1和4,之后nums=[2,3]-移出2和3,之后n......
  • HDU 1853 Cyclic Tour && HDU 3488 Tour 最小费用流
    TourTimeLimit:3000/1000MS(Java/Others)    MemoryLimit:65535/65535K(Java/Others)TotalSubmission(s):2490    AcceptedSubmission(s):1228ProblemDescriptionInthekingdomofHenryy,thereareN(2<=N<=200)cities,withM(M<......
  • HDU - 5649 线段树+区间二分答案 (好题)
    DZYhasasequencea[1…n].Itisapermutationofintegers1∼n.Nowhewantstoperformtwotypesofoperations:0lr:Sorta[l…r]inincreasingorder.1lr:Sorta[l…r]indecreasingorder.Afterdoingalltheoperations,hewilltellyouapositionk,andask......
  • 多校第六场 1011 hdu 5363Key Set(组合数学)
    题目链接:hdu5363题目大意:给出一个到n的自然数集合,问它有多少个子集,元素之和是偶数。题目分析:首先偶数不会导致集合的和的奇偶性发生变化;奇数会导致集合的和的奇偶性发生变化。我们设奇数m1个,偶数m2个。所以我们可以选取0~m1个偶数,但是只能选取偶数个奇数。那么偶数的方案数就是......
  • hdu 5441 长春区域赛网络赛 1005 Travel(并查集)
    题目链接:hdu5441题目大意:有一个n个点的无向图,给出m条边的边权,给出q次询问,每次给出一个值,求用到所有边权不大于这个值的边的情况下,能够互相到达的点对的个数(自己到自己不算)题目分析:首先我们对于边按照边权从小到大排序,对于询问按照值从小到大排序。枚举每次询问,从前到后扫描边,如果......
  • hdu 5442 长春区域赛网络赛 1006 Favorite Donut(后缀数组)
    题目链接:hdu5442题目大意:给出一个环,每颗珠子有一个甜度,选择第一个珠子和吃的方向,问得到的吃珠子的字符串的字典序最大的,如果有多个,选取位置最靠前的,如果还是多个,选择顺时针吃的。题目分析:-首先构造一个字符串,首先正着按环吃,那么就是字符串正着写两遍,连接在一起;中间用没有出现过的......