hdu 1176免费馅饼
2012-03-26 18:57
253 查看
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; int max3(int a,int b,int c) { return max(a,max(b,c)); } int dp[11][100010]; int main() { int i,j,n,e,t,m; while(scanf("%d",&n)!=EOF&&n) { memset(dp,0,sizeof(dp)); m = 0; for(i = 0;i<n;i ++) { scanf("%d%d",&e,&t); dp[e][t] ++; if(m < t) m = t; } for(i = m-1;i >= 0;i --) { for(j = 0;j < 11;j ++) { if(j == 0) dp[j][i] += max(dp[0][i+1],dp[1][i+1]); else if(j == 10) dp[j][i] += max(dp[10][i +1],dp[9][i+1]); else { dp[j][i] +=max3(dp[j-1][i+1],dp[j][i+1],dp[j+1][i+1]); } } } printf("%d\n",dp[5][0]); } }
数塔的变形;
数塔问题要注意的就是推理的顺序。一般起点和终点都已经决定了顺序,因为数塔的两种顺序都是一样的,而最终的答案的点就是起点或终点。像这题就应该逆序推理。
相关文章推荐
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼 dp
- HDU 1176 免费馅饼
- HDU 1176 免费馅饼
- 基础dp5 - G - 免费馅饼 HDU - 1176
- hdu 1176 免费馅饼 dp
- HDU-1176-数塔DP-免费馅饼
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼 (DP)
- HDU - 1176 免费馅饼(逆向DP Or 记忆化搜索)
- HDU-1176 免费馅饼
- hdu 1176 免费馅饼(nyist 613)
- hdu 1176 免费馅饼
- HDU 1176 免费馅饼(线性dp)
- HDU 1176 免费馅饼
- hdu 1176 免费馅饼
- hdu1176 免费馅饼 两种动态规划 三段程序(分别为TLE,AC,AC)
- HDU - 1176 - 免费馅饼(动态规划)
- HDU 1176 免费馅饼 dp
- HDU 1176 免费馅饼(DP)