zoukankan      html  css  js  c++  java
  • hdu 2795 Billboard(单点更新,区间查询)

    题意:

    h*w的白板。

    有n个广告牌,每个广告牌是1*wi。必须放置在白板的upmost中的leftmost。

    输出n个广告牌放置在第几行。如果放不下,输出-1。

    数据规格:

    h, w, and n (1 <= h,w <= 10^9; 1 <= n <= 200,000)

    思路:

    每行最少放一个,所以最多需要n行。

    这道题要早最靠左的放得下广告牌的行号。线段树,,

    代码:

    const int maxn = 200005;
    int maxs[maxn<<2];
    
    int h,w,n;
    
    
    void PushUp(int rt){
        maxs[rt] = max( maxs[rt<<1], maxs[rt<<1|1] );
    }
    
    void build(int l,int r,int rt){
        maxs[rt] = w;
        if(l == r) return;
        int m = (l + r) >> 1;
        build(lson);
        build(rson);
    }
    
    int query(int x,int l,int r,int rt){
    
        if(l == r){
            maxs[rt] -= x;
            return l;
        }
        int m = (l + r) >> 1;
        int ret;
        if( maxs[rt<<1] >=x )
            ret = query(x,lson);
        else
            ret = query(x,rson);
        PushUp(rt);
    
        return ret;
    }
    
    
    
    
    int main(){
    
        while(scanf("%d%d%d",&h,&w,&n)!=EOF){
            h = min(h,n);
            build(1,h,1);
    
            for(int i=1;i<=n;++i){
                int x;
                scanf("%d",&x);
                if(x > maxs[1]) printf("-1
    ");
                else printf("%d
    ",query(x,1,h,1));
            }
        }
    }
  • 相关阅读:
    CookieContainer.Add只能加入20个Cookie实例的解决方法
    ELM网络训练模型
    ELM学习(一)
    贝叶斯规律
    异方差性
    分类,回归,聚类
    机器学习中的正则化
    过拟合
    高斯分布——正态分布或钟形分布
    IDC:全球数据库
  • 原文地址:https://www.cnblogs.com/fish7/p/4255017.html
Copyright © 2011-2022 走看看