您的位置:首页 > 其它

hdu 1176 免费馅饼

2013-05-10 15:07 218 查看
这个题目第一眼看了真没思路,也没想到跟动态规划有关系,最后还是看了Tanky Woo的文章才明白





看图片对比一下,数轴以5为塔顶,左右两边依次往下落,就形成数塔

  题目传送门

#include<stdio.h>
#include<string.h>
int dp[11][100001];
int max(int a, int b)
{
return a>b?a:b;
}

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


参考:http://www.wutianqi.com/?p=2457
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: