题目链接: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的更多相关文章

  1. HDU 1176免费馅饼 DP数塔问题转化

    L - 免费馅饼 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  2. HDU 1176 免费馅饼(DP)

    职务地址:HDU 1176 以时间为横轴.11个点位纵轴构造一个矩阵.然后利用数字三角形的方法从上往下递推下去. 代码例如以下: #include <iostream> #include ...

  3. HDU - 1176 免费馅饼 DP多种状态转移

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

  4. HDU 1176 免费馅饼 DP类似数塔题

    解题报告: 小明走在一条小路上,这条小路的长度是10米,从左到右依次是0到10一共十个点,现在天上会掉馅饼,给出馅饼掉落的坐标和时间,一开始小明的位置是在坐标为5的位置, 他每秒钟只能移动一米的距离, ...

  5. HDU 1176 免费馅饼 (动态规划)

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

  6. HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)     ...

  7. hdu 1176 免费馅饼(数塔类型)

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  8. HDU 1176 免费馅饼(记忆化搜索)

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

  9. HDU 1176 免费馅饼

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

  10. HDU 1176 免费馅饼(数字三角形)

    免费馅饼 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉 ...

随机推荐

  1. ES6的十大特性和认知

    ---恢复内容开始--- ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率.本文主要针对E ...

  2. MySQL实例搭建

    Q:如何判断一个Linux系统具备安装MySQL的条件? A: 1.Linux网络已经配置完成 ip地址/子网掩码.默认网关.主机名字 /etc/hosts:访问这个数据库的应用的IP地址和主机名字也 ...

  3. usaco training 4.2.3 Job Processing 题解

    Job Processing题解 IOI'96 A factory is running a production line that requires two operations to be pe ...

  4. Asp.net MVC-3-执行过程

    本篇主要讲述MVC处理请求时创建Controller和执行Action的完整过程. 创建Controller 先查看MvcHandler中处理请求的方法BeginProcessRequest: pro ...

  5. CentOS7下使用YUM安装mariadb10

    1:由于centos7 默认使用yum安装MySQL的话就会安装mariadb,只是安装的版本停留在mariadb5.x,版本比较低.如果我们需要安装mariadb10这里就需要删除mariadb-l ...

  6. 自制权限框架(一)jsp标签

    一.概述 在我们的系统中,很多时候都用到了权限.最简单的权限就是登录.登录了,我就可以自己的相关信息:没有登录,就不能看到. 目前比较流行的权限框架就是apache shiro和spring secu ...

  7. 第四章:Django 模型 —— 设计系统表

    1. Django框架提供了完善的模型(Model )层来创建和存储数据,每一个模型对应数据库中的唯一的一张表. 2. Django 模型基础知识: .每一本模型是一个Python类,继承了djang ...

  8. POJ 2296 Map Labeler / ZOJ 2493 Map Labeler / HIT 2369 Map Labeler / UVAlive 2973 Map Labeler(2-sat 二分)

    POJ 2296 Map Labeler / ZOJ 2493 Map Labeler / HIT 2369 Map Labeler / UVAlive 2973 Map Labeler(2-sat ...

  9. 输入3个数a,b,c,按大小顺序输出

    题目:输入3个数a,b,c,按大小顺序输出 package com.li.FiftyAlgorthm; import java.util.Scanner; /** * 题目:输入3个数a,b,c,按大 ...

  10. thinkphp 面向切面编程-行为拓展

    thinkphp的CBD模式 核心保留了最关键的部分,并在重要位置设置了标签用以标记,其他功能都采用行为扩展和驱动的方式组合,开发人员可以根据自己的需要,对某个标签位置进行行为扩展或者替换,就可以方便 ...