简单DP 免费馅饼 HDU 1176

来源:互联网 发布:windows xp 桌面主题 编辑:程序博客网 时间:2024/06/07 19:09

没什么要讲的,直接代码

#include <stdio.h>#include <string.h>int max(int a,int b){return a<b?b:a;}int dp[12][100005];int main(){int n;int i;int a,b;int maxn;while(scanf("%d",&n)!=-1){if(n==0)break;maxn=0;memset(dp,0,sizeof(dp));for(i=0;i<n;i++){scanf("%d%d",&a,&b);dp[a][b]++;if(b>maxn)maxn=b;}for(i=maxn-1;i>=0;i--){dp[0][i]+=max(dp[0][i+1],dp[1][i+1]);          //只需要执行第一个的时候操作一下,最后一个因为清空了dp,所以无所谓for(int j=1;j<=10;j++)                         //站在中间,两侧距离都为5,所以从0到10位置都是可以的dp[j][i]+=max(max(dp[j-1][i+1],dp[j][i+1]),dp[j+1][i+1]);}printf("%d\n",dp[5][0]);}return 0;}

0 0