HDU 1176 免费馅饼

来源:互联网 发布:淘宝店铺访客少怎么办 编辑:程序博客网 时间:2024/06/05 02:54

题目:

http://acm.hdu.edu.cn/showproblem.php?pid=1176

题意:

有一条长11的路径,n个馅饼掉下来,每秒钟站在i处可以够到i,i+1,i-1三处其中之一的馅饼,每秒可以移动一次,一开始在5位置。求最大馅饼数。

思路:

dp[i][j]为i秒时在j处拿到的最大馅饼数,一开始储存没处每秒的馅饼数,然后倒推回来,dp[i][j]+=max(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1])。

代码:

#define N 112345int n,m;int dp[N][13];int main(){    int i,j,k,kk,t,x,y,z;    while(scanf("%d",&n)!=EOF&&n)    {        memset(dp,0,sizeof(dp));        for(i=0,m=0;i<n;i++)        {           scanf("%d%d",&x,&y);           dp[y][x+1]++;           m=max(m,y);        }        for(i=m-1;i>=0;i--)            for(j=1;j<=11;j++)                dp[i][j]+=max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]));        printf("%d\n",dp[0][6]);    }    return 0;}








0 0