题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1556
树状数组练手。 区间更新,单点查询。
#include<cstdio>
#include<cstring>
int tree[110000];
int n;
void update(int v,int val){
while(v>0){
tree[v]+=val;
v-=v&-v;
}
}
int query(int v){
int sum=0;
while(v<=n){
sum+=tree[v];
v+=v&-v;
}
return sum;
}
int main(){
int i,a,b;
while(~scanf("%d",&n),n){
memset(tree,0,sizeof(tree));
for(i=0;i<n;i++){
scanf("%d%d",&a,&b);
update(a-1,-1);
update(b,1);
}
for(i=1;i<=n;i++){
printf("%d",query(i));
if(i<n) putchar(' ');
else putchar('\n');
}
}
return 0;
}