• P3740 [HAOI2014]贴海报


    题目描述

    Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论。为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙。

    张贴规则如下:

    1. electoral墙是一个长度为N个单位的长方形,每个单位记为一个格子;

    2. 所有张贴的海报的高度必须与electoral墙的高度一致的;

    3. 每张海报以“A B”表示,即从第A个格子到第B个格子张贴海报;

    4. 后贴的海报可以覆盖前面已贴的海报或部分海报。

    现在请你判断,张贴完所有海报后,在electoral墙上还可以看见多少张海报。

    输入输出格式

    输入格式:

    第一行: N M 分别表示electoral墙的长度和海报个数

    接下来M行: Ai Bi 表示每张海报张贴的位置

    输出格式:

    输出贴完所有海报后,在electoral墙上还可以看见的海报数。

    代码

    线段树模版题,求区间覆盖问题,注意从后往前枚举区间

    核心在于pushup操作回溯

    vis[rt]=vis[lson]&&vis[rson]
    #include<bits/stdc++.h>
    #define lson rt<<1
    #define rson rt<<1|1
    using namespace std;
    const int maxn=10000000+10,maxm=1000+5;
    bool vis[maxn<<2];
    int n,m;
    int l[maxm],r[maxm];
    int ans=0;
    bool flag;
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
        while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
        return x*f;
    }
    void pushup(int rt)
    {
        vis[rt]=vis[lson]&&vis[rson];
    }
    void update(int L,int R,int l,int r,int rt)
    {
        if(vis[rt])return;
        if(L<=l&&r<=R)
        {
            vis[rt]=1;
            flag=1;
            return;
        }
        int m=(l+r)>>1;
        if(L<=m)
        update(L,R,l,m,lson);
        if(m<R)
        update(L,R,m+1,r,rson);
        pushup(rt);
    }
    int main()
    {
        n=read(),m=read();
        for(int i=1;i<=m;i++)
        l[i]=read(),r[i]=read();
        for(int i=m;i>=1;i--)
        {
            flag=0;
            update(l[i],r[i],1,n,1);
            if(flag)ans++;
        }
        printf("%d",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    【bzoj2882】工艺 后缀自动机+STL-map
    【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
    【bzoj1475】方格取数 网络流最小割
    【bzoj4825】[Hnoi2017]单旋 线段树+STL-set
    【bzoj4448】[Scoi2015]情报传递 主席树
    【bzoj1803】Spoj1487 Query on a tree III DFS序+主席树
    【bzoj2127】happiness 网络流最小割
    【bzoj2431】[HAOI2009]逆序对数列 dp
    【bzoj4245】[ONTAK2015]OR-XOR 贪心
    【bzoj4066】简单题 KD-tree
  • 原文地址:https://www.cnblogs.com/DriverBen/p/10408110.html
Copyright © 2020-2023  润新知