HDU 1176 免费馅饼:dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176
题意:
横坐标范围为[0,10],你在第0秒站在坐标为5的地方。
在接下来的一段时间内,会有n个馅饼落下来,每一个馅饼有一个位置x和时刻t。
每一秒你最多可以移动1格。并且在某一个时刻,你只能接到你当前位置的馅饼。
问你最多能接到多少馅饼。

题解:
表示状态:
dp[i][j] = max num of pancakes
(1)第i秒
(2)站在j的位置
如何转移:
当前dp[i][j]取决于i-1秒时j-1,j,j+1三个位置接馅饼的情况。
但是,更新dp[i][j]的前提是上一个状态是可以达到的。比如说你第0秒在位置5,那么你不可能在第1秒到达位置10。
所以一开始要将所有dp设为-1,表示不可到达。
So...
if(dp[i-1][j-1]!=-1) dp[i][j] = max(dp[i][j], dp[i-1][j-1]);
if(dp[i-1][j]!=-1) dp[i][j] = max(dp[i][j], dp[i-1][j]);
if(dp[i-1][j+1]!=-1) dp[i][j] = max(dp[i][j], dp[i-1][j+1]);
另外还要加上现在第i秒接到的馅饼数:
if(dp[i][j]!=-1) dp[i][j] += w[i][j];
边界条件:
你在第0秒时,站在位置5,接到了0个馅饼。
(为了防止数组越界,给所有坐标+1)
所以dp[0][6] = 0;
AC Code:
// dp[i][j] = max num of pancakes
// dp[i][j] = max(dp[i-1][j-1], dp[i-1][j], dp[i-1][j+1]) + w[i][j]
// edge: dp[5][0]
// enumerate:
// i: 1 to maxt
// j: 1 to 11 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_X 15
#define MAX_T 100005 using namespace std; int n;
int x,t;
int ans;
int maxt;
int w[MAX_T][MAX_X];
int dp[MAX_T][MAX_X]; int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==) break;
memset(w,,sizeof(w));
memset(dp,-,sizeof(dp));
ans=;
maxt=;
dp[][]=;
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&t);
w[t][x+]++;
maxt=max(maxt,t);
}
for(int i=;i<=maxt;i++)
{
for(int j=;j<=;j++)
{
if(dp[i-][j-]!=-) dp[i][j]=max(dp[i][j],dp[i-][j-]);
if(dp[i-][j]!=-) dp[i][j]=max(dp[i][j],dp[i-][j]);
if(dp[i-][j+]!=-) dp[i][j]=max(dp[i][j],dp[i-][j+]);
if(dp[i][j]!=-) dp[i][j]+=w[i][j];
ans=max(ans,dp[i][j]);
}
}
printf("%d\n",ans);
}
}
HDU 1176 免费馅饼:dp的更多相关文章
- HDU 1176免费馅饼 DP数塔问题转化
L - 免费馅饼 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- HDU 1176 免费馅饼(DP)
职务地址:HDU 1176 以时间为横轴.11个点位纵轴构造一个矩阵.然后利用数字三角形的方法从上往下递推下去. 代码例如以下: #include <iostream> #include ...
- HDU - 1176 免费馅饼 DP多种状态转移
免费馅饼 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了 ...
- HDU 1176 免费馅饼 DP类似数塔题
解题报告: 小明走在一条小路上,这条小路的长度是10米,从左到右依次是0到10一共十个点,现在天上会掉馅饼,给出馅饼掉落的坐标和时间,一开始小明的位置是在坐标为5的位置, 他每秒钟只能移动一米的距离, ...
- HDU 1176 免费馅饼 (动态规划)
HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...
- HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1176 免费馅饼(数塔类型)
http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1176 免费馅饼
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- HDU 1176 免费馅饼(数字三角形)
免费馅饼 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉 ...
随机推荐
- SAP PI入门
本教程的目的是让读者理解:SAP Process Intergration(以下简称SAP PI)是什么.我们不需要探究课题的本质,但是会讨论SAP PI的架构和不同特点.本文只会覆盖到PI的基本特点 ...
- RADIUS and IPv6[frc-3162译文]
如今项目中需要涉及到RADIUS及IPv6的使用,而网络中的资料相对较少,现对frc-3162进行中文翻译,分享出来. 由于英语水平有限,翻译不恰当的地方,还请提出,便于在下及时修改. 原文链接 这份 ...
- java后端程序员1年工作经验总结
java后端1年经验和技术总结(1) 1.引言 毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西.这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为 ...
- readSerializableObj
package JBJADV003;import java.io.*;public class readSerializableObj { public static void main(String ...
- Day2_数字类型_字符串类型_列表类型_元组_字典_集合_字符编码_文件处理
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- 欢迎大家Follow me!微软MVP罗勇(Dynamics CRM方向)欢迎您!
我是一名八零后,来自湖南乡村,2002年毕业于大连大学工商管理专业,主要靠自学走上了编程之路.从2012年开始接触Dynamics CRM 2011,一直从事Dynamics CRM方面工作,熟悉Dy ...
- jquery中append与appendTo方法区别
1. append(content)方法 方法作用:向每个匹配的元素内部追加内容. 参数介绍:content (<Content>): 要追加到目标中的内容. 用法示例: HTML代码为& ...
- UGUI射线检测
1.Graphic Raycaster 主要用于UI上的射线检测,挂有这个组件的物体,必须要挂上Canvas这个组件(当挂上Graphic Raycaster时Canvas也会自动挂上). Ignor ...
- mysql数据库定时备份
最近要用到mysql备份,就写了shell脚本用于备份. #!/bin/bash #定义备份的数据库名称 database=*** #定义备份的时间 currTime=$(date +%Y%m%d) ...
- python模块之os模块详解
os.listdir(dirname):列出dirname下的目录和文件 os.getcwd():获得当前工作目录 os.curdir:返回当前目录('.') os.chdir(dirname):改变 ...