zoukankan      html  css  js  c++  java
  • Hdu2795Billboard线段树

    没啥好说的,直接搞。

    #include<stdio.h>
    
    #define lson l,mid,rt<<1
    #define rson mid+1,r,rt<<1|1
    int max[1000000];
    int m;
    int Max(int a, int b)
    {
        if (a>b)
            return a;
        return b;
    }
    void up(int rt)
    {
        max[rt] = Max(max[rt << 1], max[rt << 1 | 1]);
    }
    
    void build(int l, int r, int rt)
    {
        max[rt] = m;
        if (l == r) return;
        int mid = (l + r) >> 1;
        build(lson);
        build(rson);
    }
    
    void ask(int len, int l, int r, int rt)
    {
        if (l == r){
            printf("%d
    ", l);
            max[rt] -= len;
            return;
        }
        int mid = (l + r) >> 1;
        if (len <= max[rt << 1])
            ask(len, lson);
        else
            ask(len, rson);
        up(rt);
    }
    
    int main()
    {
        int n, k, len, i;
        while (scanf("%d%d%d", &n, &m, &k) != EOF){
            if (n>k) n = k;
            build(1, n, 1);
            for (i = 0; i<k; i++)
            {
                scanf("%d", &len);
                if (len>max[1]) puts("-1");
                else
                    ask(len, 1, n, 1);
            }
        }
        return 0;
    }
  • 相关阅读:
    HDU2201
    HDU2202 凸包
    HDU 4353 几何
    POJ2031 prim
    HDU1392 凸包
    HDU1689 BFS+最小奇数环
    设计模式 [转]
    Mining Massive Data Sets PPT
    C++编程命名规范 [转]
    static_cast与dynamic_cast转换 [转]
  • 原文地址:https://www.cnblogs.com/yigexigua/p/3928235.html
Copyright © 2011-2022 走看看