HDU1556 Color the ball(线段树)
2013-04-09 21:58
344 查看
普通的区间累加操作
#include <iostream> #include <cstdio> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 const int maxn=100010; int segs[maxn<<2],f[maxn<<2],fl,n; void pushDown(int rt){ if(f[rt]){ segs[rt<<1]+=f[rt]; f[rt<<1]+=f[rt]; segs[rt<<1|1]+=f[rt]; f[rt<<1|1]+=f[rt]; f[rt]=0; } } void update(int L,int R,int l,int r,int rt){ if(L<=l&&r<=R){ segs[rt]+=(r-l+1); f[rt]+=1; return; } int m=(l+r)>>1; pushDown(rt); if(L<=m)update(L,R,lson); if(R>m)update(L,R,rson); } void print(int l,int r,int rt){ if(l==r){ if(fl++>0)printf(" "); printf("%d",segs[rt]); return; } int m=(l+r)>>1; pushDown(rt); print(lson),print(rson); } int main(){ while (scanf("%d",&n)&&n){ fl=0; memset(segs,0,sizeof(segs)); memset(f,0,sizeof(f)); for (int i=0;i<n;++i) { int a,b; scanf("%d%d",&a,&b); update(a,b,1,n,1); } print(1,n,1); printf("\n"); } return 0; }
相关文章推荐
- hdu1556-color the ball 线段树
- Color the ball(hdu1556)(hash)或(线段树,区间更新)
- 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
- hdu1556 Color the ball 线段树,成段更新水题
- HDU1556:Color the ball(线段树区间更新单点求值)&&树状数组解法
- hdu1556 Color the ball【树状数组 || 线段树 || 技巧*区间修改】
- HDU1556 Color the ball 解题报告--线段树
- Color the ball(hdu1556)(hash)或(线段树,区间更新)
- HDU1556-Color the ball-线段树成段更新入门题/前缀和
- hdu1556 Color the ball 线段树
- hdu1556 Color the ball 简单线段树
- hdu1556 Color the ball(线段树区间更新)