hdu1176 免费馅饼(简单DP)
来源:互联网 发布:匿了网络用语 编辑:程序博客网 时间:2024/05/12 11:03
和数塔类似,只不过顶点换成了该人的起点。
状态方程:dp[i][j] = max(dp[i + 1][j - 1], dp[i + 1][j], dp[i + 1][j + 1]) + a[i][j]。
注意0和10的特殊情况。
还要注意= =,codeblock似乎无法承受N = 100005的数据量,但oj可以A掉。。。
#include <stdio.h>#include <cstring>#include <algorithm>using namespace std;const int N = 100005;int main(){ // freopen("in.txt", "r", stdin); int x, T, i, j, m, maxt; int dp[N][15], a[N][15]; while(~scanf("%d", &m) && m) { maxt = 0; memset(dp, 0, sizeof(dp)); memset(a, 0, sizeof(a)); for(i = 0; i < m; i ++) { scanf("%d%d", &x, &T); a[T][x] ++; maxt = max(maxt, T); } for(i = maxt; i >= 0; i --) for(j = 0; j < 11; j ++) { if(j == 0) dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + a[i][j]; else if(j == 10) dp[i][j] = max(dp[i + 1][j - 1], dp[i + 1][j]) + a[i][j]; else dp[i][j] = max(dp[i + 1][j - 1], max(dp[i + 1][j], dp[i + 1][j + 1])) + a[i][j]; } printf("%d\n", dp[0][5]); } return 0;}
0 0
- hdu1176 免费馅饼(简单DP)
- hdu1176免费馅饼(dp)
- hdu1176 免费馅饼(dp)
- hdu1176免费馅饼 dp
- HDU1176:免费馅饼(DP)
- hdu1176免费馅饼(DP)
- HDU1176 免费馅饼 DP
- hdu1176免费馅饼(DP)
- hdu1176 免费馅饼--DP
- HDU1176 免费馅饼 DP
- 【DP】HDU1176免费馅饼
- hdu1176 免费馅饼 (dp)
- hdu1176免费馅饼 dp
- hdu1176 免费馅饼 DP
- HDU1176 免费馅饼(水DP)
- HDU1176免费馅饼(dp数塔)
- hdu1176 免费馅饼(数塔 dp)
- hdu1176—免费馅饼(dp)
- 从unique_ptr赋值到shared_ptr引起的指针悬空bug
- 【读书笔记】Android源码设计模式解析与实践(一)
- IOS-第七天笔记
- Android Binder机制
- 大型网站架构系列:20本技术书籍推荐
- hdu1176 免费馅饼(简单DP)
- 毕业设计第二天
- 界面学习
- 第七天学习笔记 ---计算机中进制转换问题
- ios-第六天笔记
- 基于java的微信公众平台开发视频教程
- zabbix脚本报警介质自定义
- C语言随机函数总结
- 小笔记