1191 数轴染色
来源:互联网 发布:天下手游挂机软件 编辑:程序博客网 时间:2024/04/29 01:47
题目描述 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<cstdio>#include<iostream>#define lch now*2#define rch 2*now+1using namespace std;struct node { int l,r; int sum; bool tag;};node stg[4000010];void build(int now,int l,int r) { stg[now].l=l; stg[now].r=r; if(l==r){ stg[now].sum=1; return; } int mid=(l+r)/2; build(lch,l,mid); build(rch,mid+1,r); stg[now].sum=stg[lch].sum+stg[rch].sum;}void quere(int now,int l,int r) { if(stg[now].tag){stg[now].sum=0;stg[now<<1].tag=stg[now<<1|1].tag=1;return;} int ll=stg[now].l,rr=stg[now].r; if(l==ll&&r==rr){ stg[now].tag=1; stg[now].sum=0; return; } int mid=(ll+rr)/2; if(r<=mid) quere(lch,l,r); else if(l>mid) quere(rch,l,r); else { quere(lch,l,mid); quere(rch,mid+1,r); } stg[now].sum=stg[lch].sum+stg[rch].sum;}int main() { int n,m; scanf("%d%d",&n,&m); build(1,1,n); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); quere(1,x,y); printf("%d\n",stg[1].sum); }}
但是
某犇说并查集也可以!我擦 ,这也行?!?!?
于是就有了
#include<cstdio>#include<iostream>using namespace std;int fa[300000];int find(int x) { if(fa[x]==x) return x; else return fa[x]=find(fa[x]);}int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) fa[i]=i; while(m--) { int x,y; 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
- Wikioi-1191-数轴染色
- wiki-1191数轴染色
- 1191 数轴染色
- Codevs 1191 数轴染色
- 【codevs 1191】数轴染色
- Codevs 1191 数轴染色
- 1191 数轴染色
- Codevs 1191 数轴染色
- 【codevs 1191】数轴染色
- 数轴染色
- 数轴染色
- codevs 1191 数轴染色 题解报告
- codevs 1191 数轴染色 模拟? 解题报告
- 【wikioi1191】 数轴染色
- wikioi1191 数轴染色
- codevs1191 数轴染色
- Codevs 数轴染色
- 【codevs1191】数轴染色
- NYOJ 18 The Triangle(dp + 记忆化)
- OC语言中的类学习
- Android的window类的常用方法
- 我的第一篇博文
- JAVA中的Wait() 和notify()方法
- 1191 数轴染色
- 后序线索化二叉树及遍历(图解)
- 同步直播(4):空间统计中的注意事项
- NSNotificationCenter消息注册与撤销
- HDU 1856 More is better(越多越好,并查集,节点的个数)
- 蜂鸟视图 - 停车场室内定位导航
- java-oracle--JDBCODBC桥连接错误
- IOS(swift语言)第6天
- android sdk