zoukankan      html  css  js  c++  java
  • hdu 1176 dp 数塔问题

    哎,一开始没看到从5开始....

    后来写懵了,用了queue正推,记录能到达的节点,p[i+1][j] = max(p[i][j],max(p[i][j-1],p[i][j+1])) 

    嗯,用stl mle了,自己写queue又tle,不知道为什么嚒,好像bfs我从没a过...

    看了dicuss的思路,只看到数塔两个字我就懂了...

    只能说巧妙了,区间反向确定我确实没想到...

    //数塔问题
    /*
        t=0       5
        t=1      456
        t=2     34567
        t=3    2345678
        t=4   123456789
        t=5  0123456789A
    */
    
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    
    const int MAXN= 1e5+10;
    
    using namespace std;
    
    int dp[MAXN][12];
    int mov[3]={-1,0,1};
    
    /*bool isOverBorder(int x){
        if(x<0||x>10)return true;
        else return false;
    }*/
    
    void init(){
        for(int i=0;i<MAXN;i++){
            for(int j=0;j<11;j++){
                dp[i][j] = 0;
            }
        }
    }
    
    int main()
    {
        int n;
        while(scanf("%d",&n),n){
            int t,p;
            int maxt = -MAXN;
            init();
            for(int i=0;i<n;i++){
                scanf("%d%d",&p,&t);
                dp[t][p] += 1;
                maxt = max(maxt,t);
            }
    
            for(int i=maxt-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(dp[i+1][j],max(dp[i+1][j+1],dp[i+1][j-1]));
                }
            }
            cout<<dp[0][5]<<endl;
        }
        return 0;
    }
    View Code
    在一个谎言的国度,沉默就是英雄
  • 相关阅读:
    SQL逻辑查询处理阶段
    将json字符串转换为json兑现
    JSTL核心标签库
    eclipse用4个空格代替Tab 每行80字符限制提示线显示空格
    MyEclipse8.6 性能优化
    jsp/servlet总结复习
    SQLServer之MERGE INTO
    as3效率提升
    让默认TextField更清晰地显示中文
    as3垃圾回收机制
  • 原文地址:https://www.cnblogs.com/EdsonLin/p/5350293.html
Copyright © 2011-2022 走看看