• BZOJ 5168 && Luogu P3740 [HAOI2014]贴海报 线段树~~


    据说某谷数据十分水。。。但幸好BZOJ上也过了。。。话说我记得讲课时讲的是奇奇怪怪的离散化。。但现在突然觉得什么都可以线段树瞎搞了。。。QAQ


    直接就是这个区间有没有被覆盖,被覆盖直接return; 如果出现修改,那么就说明它能被看见,++ans

    短的一批的线段树(去了不必要的操作码量还是很小的。。。)

    #include<cstdio>
    #include<iostream>
    #define R register int
    #define ls (tr<<1)
    #define rs (tr<<1|1)
    const int N=10000010,M=1010;
    using namespace std;
    inline int g() {
        R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;
        do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
    } int n,m,ans,l[M],r[M];
    bool flg[N<<2],cv;
    inline void change(int tr,int l,int r,int LL,int RR) {
        if(flg[tr]) return ; if(LL<=l&&r<=RR) {flg[tr]=cv=true; return ;}
        R md=l+r>>1; if(LL<=md) change(ls,l,md,LL,RR); if(RR>md) change(rs,md+1,r,LL,RR); 
        flg[tr]=flg[ls]&flg[rs];
    }
    signed main() {
        n=g(),m=g(); for(R i=1;i<=m;++i) l[i]=g(),r[i]=g();
        for(R i=m;i;--i) cv=false,change(1,1,n,l[i],r[i]),ans+=cv;
        printf("%d
    ",ans);
    }

    2019.04.27

  • 相关阅读:
    无熟人难办事?—迪米特法则
    考题抄错会做也白搭—模板方法模式
    简历复印—原型模式
    Android Studio 安装及常见问题
    雷锋依然在人间——工厂方法模式
    欢迎测试
    客户端程序设计V1
    Linux服务器端程序设计V1
    【Alpha】最后一篇
    【Alpha】开发日志Day10-0721
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10781193.html
Copyright © 2020-2023  润新知