luogu P1840 Color the Axis_NOI导刊2011提高(05)

时间:2019-12-12
本文章向大家介绍luogu P1840 Color the Axis_NOI导刊2011提高(05),主要包括luogu P1840 Color the Axis_NOI导刊2011提高(05)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述

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

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

输出格式

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


并查集,合并所有白点

#include<map>
#include<ctime>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5+10;
int fa[N],n,m,cnt;
inline int get(int x){
    if(x==fa[x])return x;
    else return fa[x]=get(fa[x]);
}
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)fa[i]=i;
    while(m--){
        int a,b; scanf("%d%d",&a,&b);
        b=get(b);
        while(a<=b){
            if(a!=b&&get(a)==b)break;
            fa[b]=get(fa[b-1]);
            cnt++; b=get(b);
        }
        printf("%d\n",n-cnt);
    }
}

原文地址:https://www.cnblogs.com/naruto-mzx/p/12028122.html