题目描述

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可能会超时。

输入样例

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

输出样例

4

题目解析

其实就是数塔问题的变形,这是动态规划里一个经典模型。

动态规划入门_AryCra_07的博客-CSDN博客

其中,同一秒钟同一点掉落馅饼的个数就是数塔问题中每点的数字大小,每一秒就相当于“每一层”,从最后一秒回溯到初始位置,就是我们要找的答案。

代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int dp[12][N], n = 1, x, T, maxT;
int main(){ios::sync_with_stdio(false); //关闭流同步使得cin更快while (cin >> n && n != 0 ){maxT = 0;memset(dp, 0, sizeof dp); //初始化for(int i = 0; i < n; i ++){cin >> x >> T;dp[x][T] ++;if(maxT < T) maxT = T; //找到最大的时间,作为dp的边界}for(int i = maxT - 1; i >= 0; i --) { //一层一层往回走for(int j = 0; j <= 10; j ++) { //遍历每个点if(j == 0){dp[j][i] += max(dp[j][i + 1], dp[j + 1][i + 1]);}else if(j == 10){dp[j][i] += max(dp[j][i + 1], dp[j - 1][i + 1]);}else{int tmp = max(dp[j][i + 1], dp[j - 1][i + 1]);int ay = max(tmp, dp[j + 1][i + 1]);dp[j][i] += ay;}}}cout << dp[5][0] << "\n";}return 0;
}

动态规划问题——免费馅饼相关推荐

  1. 动态规划(免费馅饼)

    都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...

  2. 动态规划训练18 [免费馅饼 HDU - 1176 ]

    免费馅饼 HDU - 1176 这也是一道比较简单的动态规划 dp[i][j]表示到时间i,位置为j所能采集的最大馅饼数量 状态转移非常好写 dp[i][j] = max{dp[i-1][j],dp[ ...

  3. hdu1176 免费馅饼 动态规划 二维数组实现

    免费馅饼 Time Limit: 1000MS Memory Limit: 32768KB Submit Statistic Discuss Problem Description 都说天上不会掉馅饼 ...

  4. 免费馅饼 (动态规划)

    HDU 1176 免费馅饼 (动态规划) Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在 ...

  5. HDU 1176 免费馅饼 (动态规划、另类数塔)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. 免费馅饼 (DP动态规划问题详细解析)

    免费馅饼 HDU - 1176 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米 ...

  7. hdu1176 免费馅饼 (动态规划)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. NYOJ 613 免费馅饼

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  9. 免费馅饼 HDU - 1176

    免费馅饼 HDU - 1176 题意: 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...

最新文章

  1. Pytorch使用GPU
  2. SCAU RP Test —— 因式分解与组合
  3. R语言sys方法:sys.info函数获取系统和用户信息、sys.localeConv函数获取当前区域中的数字和货币表示的详细信息、sys.setFileTime函数更改文件的时间
  4. 产生随机数的用户图形界面Python GUI
  5. [Android]关于Root
  6. vim编辑二进制文件
  7. ad策略下发_组策略--下发文件到计算机
  8. STM32F103mini教程通用定时器
  9. 1.12 四类向量组
  10. bat手动备份数据库,当前时间命名备份文件名
  11. 将Excel中的数据导入至sqlserver数据表
  12. 智能陈桥五笔7.8试用编号是多少_如何设计和编写软件测试用例
  13. Kindle DXG的一些使用方法及技巧
  14. 乔戈里推荐的新版Java学习路线,开源!
  15. 学5G网络优化,就业前景好?薪资高?
  16. 敏感文件/目录扫描工具 dirsearch
  17. 日本向英国及欧盟发出要求,称英国脱欧不可对云服务造成影响
  18. 老狼远程协助软件编写教程共62节全(作为作者,应该是最晚发布的了)
  19. 2017年12月银行卡跨行ATM取现手续费
  20. 用Python基础创建一个简单的注册登录系统

热门文章

  1. vue身份证号码校验
  2. 秦雅:IT女生对未来职业的一点思考
  3. linux递归替换目下所有文件的某个特定字符串
  4. gdb调试器之测不准原则
  5. emc 登录 java_连接EMC存储系统
  6. html边框闪烁代码,纯css实现动态边框的示例代码
  7. mysql8.0.20免安装初始化步骤记录
  8. 基于知识图谱的智能问答
  9. 5分钟学会cleos注册EOS主网账户、投票和发币
  10. c语言错误c1010怎么办,fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include stdafx.h...