HDU1556 color the ball (树状数组)
2017-09-02 19:17
323 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1556
思路:直接用树状数组即可,因为更新的是区间,所以需要更新2次。
比如更新 [1,3] ,n的大小为6,那么update(1,1)其实是更新了[1,6],所以需要将[4,6]的每个元素减一,即update(4,-1).
思路:直接用树状数组即可,因为更新的是区间,所以需要更新2次。
比如更新 [1,3] ,n的大小为6,那么update(1,1)其实是更新了[1,6],所以需要将[4,6]的每个元素减一,即update(4,-1).
#include<iostream> #include<stdio.h> #define maxn 100005 #define lowbit(x) ((x)&(-(x))) using namespace std; int n,a,b,color[maxn]; void update(int x,int y) { while(x<=n) { color[x]+=y; x+=lowbit(x); } } int quary(int x) { int sum=0; while(x>0) { sum+=color[x]; x-=lowbit(x); } return sum; } int main() { while(scanf("%d",&n)&&n) { for(int x=0;x<=n;x++) color[x]=0; for(int x=0;x<n;x++) { scanf("%d%d",&a,&b); update(a,1);update(b+1,-1); } for(int x=1;x<n;x++) printf("%d ",quary(x)); printf("%d\n",quary(n)); } }
相关文章推荐
- 【树状数组-区间更新】hdu1556 Color the ball
- hdu1556 Color the ball (树状数组)
- HDU1556 Color the ball【树状数组】【区间更新】
- hdu1556 Color the ball【树状数组 || 线段树 || 技巧*区间修改】
- [树状数组]HDU1556 Color the ball
- HDU1556 color the ball(树状数组)向下查询,向上统计
- hdu1556 Color the ball(树状数组)
- Hdu1556 Color the ball [分块][树状数组]
- HDU1556 Color the ball(树状数组BIT 区间修改单点询问)
- (树状数组)hdu1556 Color the ball(区间更新,单点查询)
- hdu1556 Color the ball(树状数组 修改区间,查找值)
- HDU1556 color the ball【树状数组】解题报告
- HDU1556:Color the ball(线段树区间更新单点求值)&&树状数组解法
- HDU1556 Color the ball (树状数组)
- hdu1556 color the ball 树状数组区间更新单点查询(附线段树做法)与二维扩展
- 【HDU1556】Color the ball(树状数组)
- HDU 1556 Color the ball【树状数组||前缀和】
- Color the ball(树状数组)
- Color the ball(树状数组)
- hdu 1556 Color the ball(线段树 or 树状数组 or 前缀和)