【codevs1191】数轴染色
来源:互联网 发布:数据统计公司 编辑:程序博客网 时间:2024/04/28 01:28
题目描述 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
sum[now]表示这个区间有没有被完全染色。bool
【代码】
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int n,m,lrange,rrange,ans;bool sum[5000000],delta[5000000];inline void update(int now){sum[now]=sum[now<<1]&&sum[(now<<1)+1];}inline void pushdown(int now,int l,int r,int mid){if (delta[now]){sum[now<<1]=true;delta[now<<1]=true;sum[(now<<1)+1]=true;delta[(now<<1)+1]=true;delta[now]=false;}}inline void interval_change(int now,int l,int r,int lrange,int rrange){int mid=(l+r)>>1;pushdown(now,l,r,mid);if (lrange<=l&&r<=rrange){sum[now]=true;delta[now]=true;return;}if (lrange<=mid) interval_change(now<<1,l,mid,lrange,rrange);if (mid+1<=rrange) interval_change((now<<1)+1,mid+1,r,lrange,rrange);update(now);}inline int query(int now,int l,int r,int lrange,int rrange){int mid=(l+r)>>1,ans=0;pushdown(now,l,r,mid);if (lrange<=l&&r<=rrange&&sum[now]) return r-l+1;if (l==r) return sum[now];//这句不加会出错。因为如果递归到叶子并且它没有被染色那么就返回0,否则的话就还会往下递归下去导致出错if (lrange<=mid) ans+=query(now<<1,l,mid,lrange,rrange);if (mid+1<=rrange) ans+=query((now<<1)+1,mid+1,r,lrange,rrange);return ans;}int main(){scanf("%d",&n);scanf("%d",&m);for (int i=1;i<=m;++i){scanf("%d%d",&lrange,&rrange);interval_change(1,1,n,lrange,rrange);ans=query(1,1,n,1,n); printf("%d\n",n-ans);}}
0 0
- codevs1191 数轴染色
- 【codevs1191】数轴染色
- [codevs1191]数轴染色
- Codevs1191数轴染色
- 【codevs1191】数轴染色 并查集
- 【codevs1191】数轴染色 并查集
- [codevs1191]数轴染色 并查集
- CodeVS1191 数轴染色 解题报告【并查集】
- 数轴染色
- 数轴染色
- Wikioi-1191-数轴染色
- wiki-1191数轴染色
- 【wikioi1191】 数轴染色
- wikioi1191 数轴染色
- Codevs 数轴染色
- 1191 数轴染色
- Codevs 1191 数轴染色
- 【codevs 1191】数轴染色
- ios数组基本用法和排序
- 《Java程序员生存手册 为自己赢得一份IT名企职位》 - 书摘精要
- Jacob html转word基于MS Office/WPS Office; 支持Android WPS mobile view;
- AudioSource声音播放的静态方法
- 《Monkey Android》第5课之剖析第一个App
- 【codevs1191】数轴染色
- get与post的区别
- android基础学习之ContentProvider
- python国际化
- SQL解析有两个,号分隔的字符串方法
- 《Monkey Android》第6课点击事件的四种写法
- jquery复制dom对象,不复制事件的问题
- Scalaz(22)- 泛函编程思维: Coerce Monadic Thinking
- java中Object源码分析