hdu1176-免费馅饼

来源:互联网 发布:java ee api 中文下载 编辑:程序博客网 时间:2024/05/16 07:01

免费馅饼

dp之简单数塔题,关键在于将问题转换成为数塔模型,还需要注意的是下一层的可以取相邻的三个数;

转移方程:dp[i][j]=max{dp[i-1][j-1] ,dp[i-1][j],dp[i-1][j+1]}+p[i][j] p[i][j]

// File Name: hdu1176.cpp// Author: rudolf// Created Time: 2013年04月24日 星期三 21时59分43秒#include<vector>#include<list>#include<map>#include<set>#include<deque>#include<stack>#include<bitset>#include<algorithm>#include<functional>#include<numeric>#include<utility>#include<sstream>#include<iostream>#include<iomanip>#include<cstdio>#include<cmath>#include<cstdlib>#include<cstring>#include<ctime>using namespace std;int dp[100001][13];int main(){int i,j;int n;int x,t;int maxtime;while(cin>>n&&n){memset(dp,0,sizeof(dp));maxtime=0;for(i=0;i<n;i++){cin>>x>>t;dp[t][x+1]++;if(maxtime<t)maxtime=t;}for(i=maxtime-1;i>=0;i--)for(j=11;j>=1;j--)dp[i][j]+=max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]));cout<<dp[0][6]<<endl;}return 0;}