一二三四五 上山打老虎

NC16649-校门外的树/NC24636-值周

题目链接
校门外的树:https://ac.nowcoder.com/acm/problem/16649
值周:https://ac.nowcoder.com/acm/problem/24636 数据加强版,加到了1e8

题意:从[0~L]中选取m个区间[l~r],删除[l~r]中的元素,计算最后剩余多少个元素

思路:前缀和 差分标记端点 O(n)

#include<iostream>

using namespace std;
int a[(int)1e8+5];
int l,r;
int main (){
    int n,m;
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>l>>r;
        a[l]++;
        a[r+1]--;
    }
    int ans=0;
    if(a[0]==0)ans++;
    for(int i=1;i<=n;i++)
    {
        a[i]+=a[i-1];
        if(a[i]==0)ans++;
    }
    cout<<ans<<endl;
    
    return 0;
}

posted @ 2021-01-26 15:40  黒川川  阅读(96)  评论(0)    收藏  举报