http://acm.hdu.edu.cn/showproblem.php?pid=1176

首先可以处理出整张地图的状态。

book[T][POS]表示第T秒,在第pos个地方有多少个馅饼。

dp[i][j]表示第i秒的时候,在第j个位置能得到的最大值。

边界值:dp[1][4] = book[1][4];  dp[1][5] = book[1][5]; dp[1][6] = book[1][6];

因为一开始一步只能走到这里。

然后转移枚举下一秒的时候,由上面的状态选一个最大的枚举下来。

因为只和上一唯有关,所以可以用滚动数组来实现。

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL; #include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
const int maxn = 1e5 + ;
int n;
int book[maxn][];
int dp[][];
void work() {
memset(book, , sizeof book);
memset(dp, , sizeof dp);
int mx = -inf;
for (int i = ; i <= n; ++i) {
int T, pos;
scanf("%d%d", &pos, &T);
book[T][pos]++;
mx = max(mx, T);
}
dp[][] = book[][];
dp[][] = book[][];
dp[][] = book[][];
int now = ;
for (int i = ; i <= mx; ++i) {
for (int j = ; j <= ; ++j) {
if (j == ) {
dp[now][j] = max(dp[!now][j], dp[!now][j + ]) + book[i][j];
} else if (j == ) {
dp[now][j] = max(dp[!now][j - ], dp[!now][j]) + book[i][j];
} else {
dp[now][j] = max(dp[!now][j - ], max(dp[!now][j], dp[!now][j + ])) + book[i][j];
}
}
now = !now;
}
int ans = -inf;
for (int i = ; i <= ; ++i) ans = max(ans, dp[!now][i]);
printf("%d\n", ans);
} int main() {
#ifdef local
freopen("data.txt","r",stdin);
#endif
while (scanf("%d", &n) && n) work();
return ;
}

HDU 1176 免费馅饼 矩阵取数, dp + 滚动数组的更多相关文章

  1. 题解报告:hdu 1176 免费馅饼(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小 ...

  2. 51nod 更难的矩阵取数问题 + 滚动数组优化

    这里要求要走到终点再走回来,可以转化为两个人走. 那么我们可以先粗暴的设f[x1][y1][x2][y2]为第一个人走到(x1, y1), 第二个人走到(x2, y2)的最大价值. 那么这样空间会很大 ...

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

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

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

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

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

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

  6. NOIP2007矩阵取数[DP|高精度]

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  7. 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...

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

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

  9. HDU - 1176 免费馅饼 【DP】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1176 思路 因为刚开始的起点是固定的 但是终点不是固定的 所以我们可以从终点往起点推 dp[i][j] ...

随机推荐

  1. T57

    “期待使我产生了介于幸福与恐惧之间的激动”The anticipation produced in me a sensation somewhat between bliss and fear他猛一下 ...

  2. codevs 4939 欧拉函数

    传送门 4939 欧拉函数  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamon     题目描述 Description 输入一个数n,输出小于n且与n互素的整数个 ...

  3. BZOJ3648:寝室管理

    浅谈树分治:https://www.cnblogs.com/AKMer/p/10014803.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem. ...

  4. HL7 Event Type

    Table 0003 - Event type Value Description A01 ADT/ACK - Admit / visit notification A02 ADT/ACK - Tra ...

  5. POJ1797(dijkstra求最短最长边)

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 26442   Accepted:  ...

  6. Spring boot 学习八 Springboot的filter

    一:  传统的javaEE增加Filter是在web.xml中配置,如以下代码: <filter> <filter-name>TestFilter</filter-nam ...

  7. Docker入门(三):容器(Containers)

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  8. 浅谈HTML移动Web开发(转)

    一.响应式Web设计 PC端常用的两种布局方式就是固定布局和弹性布局,前者设置一个绝大多数电脑能征服显示的固定宽度居中显示,后者则采用百分百. 响应式布局意味着媒体查询,响应式web设计并非新的技术, ...

  9. java类加载器(转)

    类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一.它使得 Java 类可以被动态加载到 Java 虚拟机中并执行.类加载器从 JDK 1.0 就出现了,最初是为了满足 Ja ...

  10. Linux运行Tomcat下的war文件

    1.查看Tomcat进程: ps -ef |grep tomcat 2.关闭Tomcat进程: kill -9 pid 3.关闭Tomcat运行: bin目录下执行 ./shutdown.sh 4. ...