zoukankan      html  css  js  c++  java
  • HDU 2795 Billboard(线段树)

    比赛时对这种线段树裸题都不够敏感,还是题做的太少了啊

    因为前面有道题和这题内存限制一样爆内存了,这题一看数据也以为会爆,其实还是没认真去想,因为 n 次询问的范围很小,所以最多也就用 n 行,并不会爆内存

    不过赛后自己不看题解也还是不会啊

    原题

    #include<bits/stdc++.h>
    using namespace std;
    struct p
    {
       int l,r,len;
    }t[800005];
    void build(int p,int l,int r,int w)
    {
       t[p].l=l,t[p].r=r;
       t[p].len=w;
       if(l==r)
       {
         return ;
       }
       int mid=l+r>>1;
       build(p<<1,l,mid,w);
       build(p<<1|1,mid+1,r,w);
    //      t[p].len=max(t[p<<1].len,t[p<<1|1].len);
    }
    void change(int p,int k)
    {
       if(t[p].l==t[p].r)
       {
         printf("%d
    ",t[p].l);
         t[p].len-=k;
         return ;
       }
       if(k<=t[p<<1].len)//这里因为要先贴上面的,所以先和t[p<<1].len比较
        change(p<<1,k);
       else
        change(p<<1|1,k);
       t[p].len=max(t[p<<1].len,t[p<<1|1].len);
    }
    int main()
    {
        int h,w,n;
        while(cin>>h>>w>>n)
        {
           build(1,1,min(h,n),w);
           int k;
           for(int i=1;i<=n;i++)
           {
           scanf("%d",&k);
           if(k>t[1].len)//直接看能不能把 k 大小贴上,不行输出 -1
            printf("-1
    ");
           else
            change(1,k);
           }
        }
    return 0;
    }
    
    戒骄戒躁,百炼成钢!
  • 相关阅读:
    Hibernate实现limit查询报错 :unexpected token: limit near line 1, column 33 [from pojo.Product p order by id limit ?,? ]
    slot_filling
    Perplexity(困惑度)
    图网络
    textrank
    copynet
    PGN
    beam-search的改进
    项目实战:如何构建知识图谱
    实体关系三元组抽取
  • 原文地址:https://www.cnblogs.com/Pecoz/p/12605923.html
Copyright © 2011-2022 走看看