1191 数轴染色

来源:互联网 发布:java中的enum用法总结 编辑:程序博客网 时间:2024/04/28 16:53
题目描述 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 <cstdio>using namespace std;int fa[200001]={0};int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}int main(){int n,s;scanf("%d%d", &n, &s);int x,y;for(int i=0;i<=n;i++)fa[i]=i;while(s--){scanf("%d%d", &x ,&y);while(find(y)!=find(x-1)){fa[find(y)]=fa[find(y)-1];n--;}printf("%d\n", n);}return 0;} 



0 0
原创粉丝点击