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的人品实在是太好了,这馅饼别处都不掉,就掉 ...
随机推荐
- Linux下BMP文件不能正常读取问题的解决办法
今天将之前在win下编好的读取BMP图像功能移植到UNIX下. 碰到的第一个问题是,Linux下的BMP文件头的结构体需要自己重新定义一遍. 第二个问题是,需要搞清楚Linux是32位的还是64位的. ...
- 软考 程序员 下午考题 c语言 笔记
1. 数组名 是表示数组空间首地址的指针常量,程序中不允许对常量赋值. 如 int a[]; a就是数组名,表示数组控件首地址的指针常量 a = 0;是错误的,不允许对指针常量赋值 &a ...
- 百度云bcc建站
一.购买百度云服务 1.百度云bcc购买网页http://bce.baidu.com/product/bcc.html 2.买完后管理:http://console.bce.baidu.com/bcc ...
- Windows Redis默认配置文件,Redis配置不生效解决方案
Windows Redis默认配置文件,Redis配置不生效解决方案, Windows Redis自启动配置不生效解决方案,Windows Redis增加自动启动服务 >>>> ...
- JMeter Http请求POST提交token失败,取样器结果Response Code 415
Jmeter脚本,http请求以post方式提交token,执行脚本在察看结果中显示失败,取样器结果响应状态Response Code 415,如图:
- 简单好用用js就可以保存文本文件到本地
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- struts2教程&实例
1.第一个struts2项目 参考官方配置 http://struts.apache.org/getting-started/ github地址:https://github.com/unbeliev ...
- fzu 2257 saya的小熊饼干
https://vjudge.net/problem/FZU-2257 题意:略 思路: 看题解补的题.正难则反的思想求概率. 首先,由于各维数之间是独立的.所以以x为例.首先,计算可以取到(i,j) ...
- log4j(一)——为什么要用log4j?
一:试验环境 OS:win7 JDK:jdk7 Log4j:1.2.17(好尴尬,原本是想试验下log4j2的,结果阴差阳错用了这个版本,不过幸好,试验也不白试验,试验的作用是一样的) 二:先看两个简 ...
- (转) Spring Boot MyBatis 连接数据库
最近比较忙,没来得及抽时间把MyBatis的集成发出来,其实mybatis官网在2015年11月底就已经发布了对SpringBoot集成的Release版本,Github上有代码:https://gi ...