HDU 1176 免费馅饼(dp)

来源:互联网 发布:js飘窗代码 编辑:程序博客网 时间:2024/06/05 15:13

这题就是数塔,但是我一开始没仔细看题,以为从第随便走走到顶最大,实际上是从5这个点出发,那么倒过来dp数塔就可以了。

////  main.cpp//  Richard////  Created by 邵金杰 on 16/9/13.//  Copyright © 2016年 邵金杰. All rights reserved.//#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=200000+100;int dp[maxn][11];int main(){    int n;    while(scanf("%d",&n)&&n)    {        memset(dp,0,sizeof(dp));        int x,t;        int time=-1;        for(int i=0;i<n;i++)        {            scanf("%d%d",&x,&t);            dp[t][x]++;            time=max(time,t);        }        for(int i=time-1;i>=0;i--)        {            for(int j=0;j<11;j++)            {                int d=dp[i+1][j];                if(j-1>=0) d=max(d,dp[i+1][j-1]);                if(j+1<11) d=max(d,dp[i+1][j+1]);                dp[i][j]+=d;            }        }        printf("%d\n",dp[0][5]);    }    return 0;}


0 0