zoukankan      html  css  js  c++  java
  • 简单dp——HDU

    题目含义
    看了就能理解,一个人捡馅饼

    题目分析

    这和数塔的题做法一样

    一个时间就是一层塔,11个位置就是一层塔有11个数

    可以从塔底到塔顶dp,dp公式是dp[i][j]+=max(dp[i+1][j-1],dp[i+1][j],dp[i+1][j+1])

    题目代码

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=1e5+7;
    int dp[maxn][11],x,t,n;
    int main(){
        while(scanf("%d",&n)&&n){
            memset(dp,0,sizeof(dp));
            int maxt=0;
            for(int i=0;i<n;i++){
                scanf("%d%d",&x,&t);
                dp[t][x]++;
                if(t>maxt)maxt=t;
            }
            for(int i=maxt-1;i>=0;i--)
            for(int j=0;j<=10;j++){
                if(!j)dp[i][j]+=max(dp[i+1][j],dp[i+1][j+1]);
                else if(j==10)dp[i][j]+=max(dp[i+1][j],dp[i+1][j-1]);
                else dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));
            }
            printf("%d
    ",dp[0][5]);
        }
        return 0;
    }
  • 相关阅读:
    10月6日动手动脑
    10月5日
    SQL
    bug 对应
    @OneToMany
    SQL Constraints
    SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
    子父表
    取字符串
    SQL中MAX()
  • 原文地址:https://www.cnblogs.com/helman/p/11227926.html
Copyright © 2011-2022 走看看