hdu-1176(动态规划)

Posted 2018zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu-1176(动态规划)相关的知识,希望对你有一定的参考价值。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176

思路:类似数塔问题,

从最后一秒开始考虑,每次这一秒的状态确定意味着前一秒的状态也已经确定,所以从下向上进行dp

注意数组要开大一些。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int MAX(int a,int b)
{
    return a>b?a:b;
}
const int maxn = 100010;
int a[maxn][15],n,dp[maxn][15];
int main(void)
{
    int j,i,t,x;
    while(~scanf("%d",&n)&&n)
    {
        memset(a,0,sizeof(a));
        int mx=0;
        for(i=0;i<n;i++) scanf("%d%d",&x,&t),mx=MAX(mx,t),a[t][x]++;
        for(i=0;i<=10;i++) dp[mx][i]=a[mx][i];
        for(i=mx-1;i>=1;i--)
        {
            for(j=0;j<=10;j++)
            if(j==0) dp[i][j]=a[i][j]+MAX(dp[i+1][j],dp[i+1][j+1]);
            else if(j==10) dp[i][j]=a[i][j]+MAX(dp[i+1][j],dp[i+1][j-1]);
            else dp[i][j]=a[i][j]+MAX(dp[i+1][j],MAX(dp[i+1][j-1],dp[i+1][j+1]));
        }
        printf("%d
",MAX(dp[1][4],MAX(dp[1][5],dp[1][6])));
    }
    return 0;
}

 

以上是关于hdu-1176(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1176

HDU 1176 免费馅饼

HDU 1176 免费馅饼

[HDU1176]免费馅饼(DP)

HDU 1176 逆向dp very easy~

HDU1176 DP 数塔