• HDU2795 Billboard


    线段树单点更新~

    建立线段树存储区间内的最大剩余宽度,优先询问左子树~

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const int maxn=1e6+14;
    struct node {
        int l,r,sum;
    }segTree[maxn*4];
    int h,w,n;
    void build (int i,int l,int r) {
        segTree[i].l=l;
        segTree[i].r=r;
        segTree[i].sum=w;
        if (l==r) return;
        int mid=(l+r)>>1;
        build(i<<1,l,mid);
        build(i<<1|1,mid+1,r);
        segTree[i].sum=max(segTree[i<<1].sum,segTree[i<<1|1].sum);
    }
    int query (int i,int x) {
        if (segTree[i].l==segTree[i].r) {
            segTree[i].sum-=x;
            return segTree[i].l;
        }
        int mid=(segTree[i].l+segTree[i].r)>>1;
        int ans;
        if (segTree[i<<1].sum>=x) ans=query(i<<1,x);
        else ans=query(i<<1|1,x);
        segTree[i].sum=max(segTree[i<<1].sum,segTree[i<<1|1].sum);
        return ans;
    }
    int main () {
        while (~scanf("%d %d %d",&h,&w,&n)) {
            h=min(h,n);
            build(1,1,h);
            int x;
            while (n--) {
                scanf ("%d",&x);
                if (segTree[1].sum<x) printf ("-1
    ");
                else printf ("%d
    ",query(1,x));
            }
        }
        return 0;
    }
  • 相关阅读:
    微信小程序 checkbox 组件
    微信小程序 button 组件
    h5视频标签 video
    h5离线缓存
    ECharts插件介绍(图表库)
    rich-text 副文本组件 text文本组件
    progress组件(进度条)
    icon组件
    movable-view组件
    android 双击图片变大,缩放功能
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12322940.html
Copyright © 2020-2023  润新知