HDU1556 Color the ball
2016-09-14 15:08
323 查看
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17300 Accepted Submission(s): 8652
Input 每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。
当N = 0,输入结束。
Output 每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。
Sample Input 3 1 1 2 2 3 3 3 1 1 1 2 1 3 0
Sample Output 1 1 1 3 2 1
Author 8600
Source HDU 2006-12 Programming Contest
Recommend LL 差分数组,每次若涂色区间为l~r,则在l处+1,r+1处-1,统计从1到每个位置的前缀和就是每个位置的答案。 ↑前缀和用树状数组维护
/*by SilverN*/ #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; const int mxn=100020; int t[mxn]; int n,m; void add(int p,int v){ while(p<=n+5){t[p]+=v;p+=p&-p;} } int sum(int p){ int res=0; while(p){res+=t[p];p-=p&-p;} return res; } int main(){ while(scanf("%d",&n) && n){ int i,j; memset(t,0,sizeof t); int x,y; for(i=1;i<=n;i++){ scanf("%d%d",&x,&y); add(x,1); add(y+1,-1); } for(i=1;i<=n;i++){ if(i==1)printf("%d",sum(i)); else printf(" %d",sum(i)); } printf("\n"); } return 0; }
相关文章推荐
- 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 D - 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 (区间修改)
- HDU1556 color the ball【树状数组】解题报告
- HDU1556——Color the ball(区间更新OR树状数组)