hdu 1176 免费馅饼
来源:互联网 发布:新浪财经数据库 编辑:程序博客网 时间:2024/06/05 16:26
这题的题意是: 给出11个点,然后给出 位置和时间 的Pair序列代表每个时刻每个点会掉落一个馅饼(可重复).注意这里并没有说时间是有序的..所以用一个二维数组对馅饼的掉落时间和掉落位置进行存储.
移动策略 : dp[i][j] = max(dp[i+1][j+1],dp[i][j+1],dp[i-1][j+1]) + a[i][j]; 其中a[i][j]代表对应时刻和位置的馅饼数量.j代表时间,i代表位置.
这里我从T+1时刻开始计算,这样最后取得dp[5][0]即可..若正面向下,则需要比较一下最底层的所有馅饼数才能获得最大值.由于点0和点10比较特殊.故我在这里在其位置都加1,取消这两个端点的特殊性.
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int MAXN = 1e5 + 5;const int SIZE = 15;int a[SIZE][MAXN],dp[SIZE][MAXN];int N,T;int max(int a,int b,int c);int main(){// freopen("1176.txt","r",stdin); while(~scanf("%d",&N),N) { int p,t; memset(dp,0,sizeof(dp)); memset(a,0,sizeof(a)); for(int i = 0; i < N; i++) { scanf("%d%d",&p,&t); a[p+1][t] ++; T = T > t ? T : t; } for(int j = T; j >= 0 ; j--) { for(int i = 1; i <= 12; i++) { dp[i][j] = max(dp[i-1][j+1],dp[i][j+1],dp[i+1][j+1]) + a[i][j];// printf("dp[%d][%d]: %d ",i,j,dp[i][j]); }// puts(""); } printf("%d\n",dp[6][0]); } return 0;}int max(int a,int b,int c){ a = a > b ? a : b; return a > c ? a : c;}
0 0
- hdu 1176 免费馅饼
- hdu 1176 免费馅饼
- hdu 1176 免费馅饼
- HDU 1176 - 免费馅饼
- hdu 1176 免费馅饼
- hdu 1176免费馅饼
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼
- hdu - 1176 - 免费馅饼
- HDU 1176 免费馅饼
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼
- 免费馅饼 hdu 1176
- hdu 1176 免费馅饼
- 怎样设置log4j日志保存路径为相对路径
- java中volatile关键字的含义
- SpringMVC学习总结(2)——SpringMVC返回json配置
- [翻译]angularjs 2.0官方新手入门教程(2)
- solr-in-action-ch1-Introduction to solr
- hdu 1176 免费馅饼
- HashMap嵌套HashMap嵌套HashMap(三层嵌套)
- js动态添加datagrid表头&批量保存实战研究
- [leetcode 77] Combinations
- Java 重写与重载区别 Java父类的Object方法 要重写tostring原因,多个catch处理逻辑
- UE4:编辑器中显示物体包围框
- [翻译]angularjs 2.0官方新手入门教程(3)
- leetcode:Counting Bits
- solr-in-action-ch4-Configuring Solr