码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1176 免费馅饼

时间:2014-07-30 17:39:04      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:style   blog   strong   io   for   2014   代码   时间   

思路:这道题是数塔模型的一种变形

首先,我们会看到,随着时间的不同,落下馅饼的位置也会不同,那么我们会考虑到,我们想到第i个点去接馅饼时候,会发现这时我们拥有的馅饼数量是(即状态转移方程):

dp[当前时间][当前位置]+=dp[当前时间-1][上一个位置(仔细思考会发现有3个位置)]

所以AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100005;
int dp[N][12];
int main()
{
  int n,t,x,maxx,m;
  while(~scanf("%d",&n))
  {
     if(n==0)break;
     m=n;
     maxx=0;
     memset(dp,0,sizeof(dp));
     while(m--)
     {
       scanf("%d%d",&x,&t);
       dp[t][x] ++;
       if(maxx<t)maxx=t;      //优化层次
     }
     for(int i=maxx-1;i >= 0;i --)      //从倒数第二层开始向上
     {

            dp[i][0]+=max(dp[i+1][0],dp[i+1][1]);             //边界的特殊情况
            for(int j=1;j<11;j++)
                dp[i][j]+=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1]);     //3个上一状态的最大值
     }

     printf("%d\n",dp[0][5]);                //顶点
  }
  return 0;
}



HDU 1176 免费馅饼,布布扣,bubuko.com

HDU 1176 免费馅饼

标签:style   blog   strong   io   for   2014   代码   时间   

原文地址:http://blog.csdn.net/u012313382/article/details/38301417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!