hdu1176 免费馅饼 ----数塔变形

<a target=_blank href="http://acm.hdu.edu.cn/showproblem.php?pid=1176">点击打开链接</a>
#include <stdio.h>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
const int maxn = 100000; 
int dp[maxn+5][12];

int main()
{
    int n,t,x;
    while(scanf("%d",&n) && n)
    {
        memset(dp,0,sizeof(dp));
        int maxt = 0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&x,&t);
            dp[t][x+1]++;
            maxt = max(maxt,t);
        }
        for(int i=maxt-1;i>=0;i--)
        {
            for(int j=1;j<=11;j++)
                dp[i][j] = max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1])) + dp[i][j];
        }
        printf("%d\n",dp[0][6]);
    }
    return 0;
}


你可能感兴趣的:(hdu1176 免费馅饼 ----数塔变形)