HDU 1556(树状数组 区域更新,单点求值)
2016-12-04 18:43
288 查看
链接:点击打开链接
//区域更新,单点求值 树状数组区间修改+单点查询的入门题,每次更新区间[l,r]的时候,给区间左端点l处往后更新+1,右端点后r+1处往后更新减1,这样,最后求i位置的值,只要从左往右求一遍前缀和,小于l的位置都没有增量,l到r之间会有增量1,r之后+1,-1相互抵消也没有增量。 具体推出的过程不得而知......
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define MAXN 100001 int tree[MAXN]; int n; int LowBit(int t){ return t&(-t); } void Add(int t,int d) { while(t<=n){ tree[t]+=d; t+=LowBit(t); } } int Get(int t) { int sum=0; while(t>0){ sum+=tree[t]; t-=LowBit(t); } return sum; } int main() { while(cin>>n,n){ int a,b; memset(tree,0,sizeof(tree)); for(int i=1;i<=n;i++){ scanf("%d%d",&a,&b); Add(a,1); Add(b+1,-1); } for(int j=1;j<=n;j++) printf("%d%c",Get(j),j==n?'\n':' '); } return 0; }
相关文章推荐
- HDU 1166(树状数组 单点更新 区域求值)
- HDU - 1556 树状数组(区间修改+单点更新)
- POJ 2352 Stars + HDU 1556 Color the ball(树状数组单点更新及伪区间更新)
- hdu 3584 三维树状数组 区间 更新 单点求值
- hdu 1556 Color the ball 【树状数组:区间修改、单点求值】
- hdu 1556 树状数组 成段更新 单点求值
- HDU - 1556 Color the ball (一维树状数组 + 区间修改 + 单点求值)
- HDU 1166 敌兵布阵 (树状数组--单点更新,区间求值)
- HDU 1556 Color the ball (一维树状数组,区间更新,单点查询)
- HDu 1556 Color the ball【线段树&&树状数组】区间更新,单点查询
- 树状数组区间更新单点求值
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
- hdu 1556 Color the ball(区间更新,单点求值)
- [HDU 4031]Attack[树状数组区间更新单点查询]
- HDU 1556 Color the ball(树状数组区间更新)
- poj 2155 Matrix 树状数组 区间更新单点求值
- HDU 1556 Color the ball 很典型的更新区间查找点的题(线段树树状数组两种解法)
- HDU 1556 Color the ball(树状数组,区间修改,单点统计)
- hdu 1166 线段树与树状数组入门 单点更新
- hdu4325 Flowers【树状数组区间更新单点求值 离散化】