标签:
3 1 1 2 2 3 3 3 1 1 1 2 1 3 0
1 1 1 3 2 1
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int MAXN=100005; int n; int c[MAXN]; int lowbit(int x) { return x&(-x); } void update(int i,int x) { while(i) { c[i]+=x; i-=lowbit(i); } } int sum(int i) { int res=0; while(i<=n) { res+=c[i]; i+=lowbit(i); } return res; } int main() { int a,b; while(scanf("%d",&n),n) { memset(c,0,sizeof(c)); for(int i=1; i<=n; i++) { scanf("%d%d",&a,&b);//c[a]~c[b]全部加1 update(a-1,-1);//c[a]之前的全部减1 update(b,1);//c[b]之前的全部加1 } for(int i=1; i<n; i++)//输出1-N printf("%d ",sum(i)); printf("%d",sum(n)); printf("\n"); } return 0; }
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int maxn=100005; int s[maxn]; int main() { int a,b,n; while(scanf("%d",&n),n) { memset(s,0,sizeof(s)); for(int i=1; i<=n; i++) { scanf("%d%d",&a,&b); for(int j=a; j<=b; ++j) ++s[j]; } for(int i=1; i<n; i++) printf("%d ",s[i]); printf("%d",s[n]); printf("\n"); } return 0; }
HDU 1556-Color the ball(树状数组-区间修改 单点查询)
标签:
原文地址:http://blog.csdn.net/mikasa3/article/details/51331125