• codevs 1191 数轴染色


     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
    题目描述 Description

    在一条数轴上有N个点,分别是1~N。一开始所有的点都被染成黑色。接着
    我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色。请输出每个操作执行后
    剩余黑色点的个数。

    输入描述 Input Description

    输入一行为N和M。下面M行每行两个数Li、Ri

    输出描述 Output Description

    输出M行,为每次操作后剩余黑色点的个数。

    样例输入 Sample Input

    10 3
    3 3
    5 7
    2 8

    样例输出 Sample Output

    9
    6
    3

    数据范围及提示 Data Size & Hint

    数据限制
    对30%的数据有1<=N<=2000,1<=M<=2000
    对100%数据有1<=Li<=Ri<=N<=200000,1<=M<=200000

    线段树(区间修改)。
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    int i,j,n,m,li,ri,s,tr[200000*4+1];
    inline void build(int ll,int rr,int now)
    {
        if(ll==rr)
        {
            tr[now]=1;
            return;
        }
        int m=(ll+rr)/2;
        build(ll,m,now*2);
        build(m+1,rr,now*2+1);
        tr[now]=tr[now*2]+tr[now*2+1];
    }
    inline void rs(int ll,int rr,int now)
    {
        if(ll>ri||rr<li||tr[now]==0) return;
        if(ll>=li&&rr<=ri)
        {
            tr[now]=0;
            return;
        }
        int mid=(ll+rr)/2;
        rs(ll,mid,now*2);
        rs(mid+1,rr,now*2+1);
        tr[now]=tr[now*2]+tr[now*2+1];
        return;
    }
    int main()
    {
        cin>>n>>m;
        build(1,n,1);
        for(i=0;i<m;++i)
        {
            cin>>li>>ri;
            rs(1,n,1);
            printf("%d
    ",tr[1]);
        }
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Linq系列:基础与本质(Part III)
    CLR系列:浅析委托
    8万亿 全球第二还是最二?
    CLR系列:窥视HashTable
    c#3.0系列:Anonymous Type In CLR(3.5)
    VC6 编译选项问题
    C++资源库不完全版本
    如何用C实现C++的特性
    几种用于WSN的仿真工具
    嵌入式编程的好资源
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6294471.html
Copyright © 2020-2023  润新知