Poj 2352 Stars

nY

學習了下樹狀數組

手寫的

大題能夠理解

不過確實nb,,,

~~注意樹狀數組從1開始

0~32000是個trick

要++,注意改N的範圍32001

#include<stdio.h>
int LB(int x){return x&(-x);}
#define N 32001
int tree[32010]; 
void add(int w,int d){
	for(;w<=N;w+=LB(w))tree[w]+=d;
	} 
int get_sum(int w){
	int res=0;
	for(;w>0;w-=LB(w))res+=tree[w];
	return res;
	}
int star[15010];
int main(){
	int n;
		scanf("%d",&n);
		int i;
		for(i=1;i<=32000+1;i++)tree[i]=0;
		for(i=0;i<n;i++)star[i]=0;
		for(i=1;i<=n;i++){
			int x,y;
			scanf("%d%d",&x,&y);
			x++;
			star[ get_sum(x) ]++;
			add(x,1);
			}
		for(i=0;i<n;i++)printf("%d\n",star[i]);
	return 0;
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章