Color the ball ---树状数组(区间更新及单点求值)
2017-08-10 10:57
169 查看
[align=left]Problem Description[/align]
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
[align=left]Input[/align]
每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。
[align=left]Output[/align]
每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。
[align=left]Sample Input[/align]
3
1 1
2 2
3 3
3
1 1
1 2
1 3
0
[align=left]Sample Output[/align]
1 1 1
3 2 1
[align=left]Author[/align]
8600
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
[align=left]Input[/align]
每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。
[align=left]Output[/align]
每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。
[align=left]Sample Input[/align]
3
1 1
2 2
3 3
3
1 1
1 2
1 3
0
[align=left]Sample Output[/align]
1 1 1
3 2 1
[align=left]Author[/align]
8600
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN=100010; int n, C[MAXN]; int Lowbit(int i) { return i&(-i); } void Update(int i,int x){ while(i<=n) { C[i]=C[i]+x; i=i+Lowbit(i); } } int Query(int i){ int sum=0; while(i>0){ sum+=C[i]; i-=Lowbit(i); } return sum; } int main() { while(scanf("%d",&n)!=EOF){ if(n==0) break; memset(C,0,sizeof(C)); for(int i=0;i<n;i++) { int a,b; scanf("%d%d",&a,&b); Update(a,1); Update(b+1,-1); } for(int i=1;i<n;i++) printf("%d ",Query(i)); printf("%d\n",Query(n)); } return 0; }
相关文章推荐
- 1005(三维树状数组+区间更新,单点求值)
- hdu1754I Hate It(线段树---单点更新,区间求值)
- UVa 12086 Potentiometers 树状数组裸题 单点更新 区间查询
- HDU 1166 敌兵布阵【线段树,树状数组入门题,单点更新,区间求和】
- HDU 1166 敌兵布阵 数据结构+树状数组+(单点更新区间求和)
- HDU 6203 ping ping ping LCA + dfs序 + 树状数组(区间更新单点查询)
- 南阳oj 123 树状数组入门 区间更新 单点求值
- HDU1556:Color the ball(线段树区间更新单点求值)&&树状数组解法
- hdu 5124(区间更新+单点求值+离散化)
- poj 2763 树链剖分(单点更新,区间求值)
- 1036: [ZJOI2008]树的统计Count 【树链剖分】【点权:单点更新区间求值】
- FZU2082 树链剖分(单点更新区间求值)
- FZU2277 Change dfs序+树状数组 区间更新 单点求值
- 树状数组区间更新单点求值
- POJ 2155 Matrix(二维树状数组+数组数组区间更新+单点查询)
- POJ 2155 Matrix(二维树状数组+区间更新单点求和)
- 一维树状数组和二维树状数组和三维树状数组的区间更新单点求值
- POJ - 2155 Matrix (二维树状数组 + 区间修改 + 单点求值 或者 二维线段树 + 区间更新 + 单点求值)
- hdu 1556 树状数组(区间更新,单点求和)
- HDU 1566 Count the Colors 树状树组 区间更新 单点求值