Wikilo 1191线段树区间修改单点查询
2014-05-09 18:41
465 查看
这题也算比较容易的了。
如果哪个区间已经没有黑色的话,就不用update了,就是因为这个原因WA了2发,唉……
如果哪个区间已经没有黑色的话,就不用update了,就是因为这个原因WA了2发,唉……
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #define PI acos(-1.0) #define mem(a,b) memset(a,b,sizeof(a)) #define sca(a) scanf("%d",&a) #define sc(a,b) scanf("%d%d",&a,&b) #define pri(a) printf("%d\n",a) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define MM 2000004 #define MN 1008 #define INF 2000000000 #define eps 1e-8 using namespace std; typedef long long ll; typedef unsigned long long ULL; ll sum[MM]; int val[MM]; void pushUp(int i) { sum[i]=sum[i<<1]+sum[i<<1|1]; } void pushDown(int i) { if(val[i]) { sum[i]=sum[i<<1]=sum[i<<1|1]=0; val[i]=0; } } void build(int i,int l,int r) { if(l==r) { sum[i]=1; return ; } int mid=(l+r)>>1; build(lson),build(rson); pushUp(i); } void update(int i,int l,int r,int L,int R) { if(L<=l&&r<=R) { val[i]=1; sum[i]=0; return ; } int mid=(l+r)>>1; pushDown(i); if(sum[i]) //如果这个i的区间已经为0就不用再进行下去了 { if(L>mid) update(rson,L,R); else if(R<=mid) update(lson,L,R); else { update(lson,L,mid); update(rson,mid+1,R); } } pushUp(i); } int main() { int n,m,l,r; sc(n,m); build(1,1,n); while(m--) { sc(l,r); update(1,1,n,l,r); printf("%lld\n",sum[1]); } return 0; }
相关文章推荐
- poj 3264 Balanced Lineup(线段树单点修改区间查询)
- UVA - 12299 RMQ with Shifts (线段树:单点修改,区间查询)
- POJ 3321 Apple Tree(DFS序+线段树单点修改区间查询)
- 【codevs1191】数轴染色 线段树 区间修改+固定区间查询
- HDU3974 线段树区间修改单点查询+树上dfs序
- Tallest Cow POJ - 3263(线段树区间修改,单点查询)
- 【数据结构】【线段树】单点修改区间查询
- hdu 1754 线段树单点修改+区间查询
- POJ 2155 Matrix 二维线段树 区间修改 单点查询
- 考试 线段树二分+单点修改+区间查询
- 1080 线段树练习 单点修改及区间查询
- hdu 5381 The sum of gcd(线段树等差数列区间修改+单点查询)
- 树套树:二维线段树初步:hdu1823——Luck and Love(单点修改,区间查询)
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 I.Minimum(线段树_单点修改,查询区间最大最少值)
- UVa 12299 RMQ with shifts(线段树单点修改 区间查询)
- 线段树(单点修改,区间查询)
- 【算法系列学习】线段树vs树状数组 单点修改,区间查询 [kuangbin带你飞]专题七 线段树 A - 敌兵布阵
- 【codevs 1081】线段树练习2(单点查询+区间修改)
- poj2886线段树(单点修改,区间查询)
- HDU1166_敌兵布阵_线段树单点修改区间查询