【樹狀陣列 求比其小的個數】poj 2353 Stars
Link:http://poj.org/problem?id=2352
注意:x,y的範圍是0-32000,樹狀陣列是無法處理0的,將處理的所有數加1放入樹狀陣列。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
/*
POJ 2352 Stars
在座標上有n個星星,如果某個星星座標為(x, y), 它的左下位置為:(x0,y0),x0<=x 且y0<=y。
如果左下位置有a個星星,就表示這個星星屬於level x
按照y遞增,如果y相同則x遞增的順序給出n個星星,求出所有level水平的數量。
*/
#define lowbit(i) (i&(-i))
const int N = 15010;
const int M = 32010;
int tree[M];
void add(int x,int val){
while(x<=M-1){
tree[x] += val;
x += lowbit(x);
}
}
int cal(int x){
int ans = 0;
while(x){
ans += tree[x];
x -= lowbit(x);
}
return ans;
}
struct asd{
int x,y;
}a[N];
bool cmp(asd a,asd b){
if(a.y!=b.y) return a.y<b.y;
return a.x<b.x;
}
int ans[N];
int main(){
memset(ans,0,sizeof(ans));
int n;
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
for(int i = 0; i < n; i++){
int temp = cal(a[i].x+1);
ans[temp]++;
add(a[i].x+1,1);
}
for(int i = 0; i < n; i++)
printf("%d\n",ans[i]);
return 0;
}
相關文章
- POJ-2352 Stars(樹狀陣列)陣列
- POJ 2352-Stars(樹狀陣列-星系)陣列
- POJ 2352 Stars(簡單樹狀陣列)陣列
- HDU 1541 & POJ 2352 Stars (樹狀陣列)陣列
- hdu4417 樹狀陣列(求指定區間比指定數小的數的個數)陣列
- POJ 2299-Ultra-QuickSort(樹狀陣列求逆序數)UI陣列
- poj 2481 樹狀陣列陣列
- 求區間不同數的個數【樹狀陣列求解】陣列
- POJ 3067-Japan(樹狀陣列-逆序數)陣列
- POJ 3928 Ping pong(樹狀陣列)陣列
- 【二維樹狀陣列】poj 2155 Matrix陣列
- 二維樹狀陣列-poj2155陣列
- poj 1195 二維樹狀陣列陣列
- HDU2689 Sort it (樹狀陣列求逆序數)陣列
- POJ 3321-Apple Tree(樹狀陣列)APP陣列
- 二維樹狀陣列--poj1195陣列
- HDU 1394 Minimum Inversion Number (樹狀陣列求逆序數)陣列
- POJ 1195 Mobile phones(二維樹狀陣列)陣列
- POJ 3321 Apple Tree(dfs+樹狀陣列)APP陣列
- 樹狀陣列陣列
- POJ 3928-Ping pong(樹狀陣列+加/乘法原理)陣列
- POJ3321 Apple Tree(DFS序 + 樹狀陣列)APP陣列
- HDU 2689 Sort it【樹狀陣列求逆序對】陣列
- 解析樹狀陣列陣列
- D 區間求和 [數學 樹狀陣列]陣列
- POJ3468 A Simple Problem with Integers---樹狀陣列(區間問題)陣列
- POJ 2352(順路講解一下樹狀陣列)陣列
- POJ 3468 【區間修改+區間查詢 樹狀陣列 | 線段樹 | 分塊】陣列
- 樹狀陣列詳解陣列
- 樹狀陣列基礎陣列
- hdu 3874 樹狀陣列陣列
- 二維樹狀陣列陣列
- 【遞迴打卡2】求兩個有序陣列的第K小數遞迴陣列
- SPOJ DQUERY (離線數狀陣列||線上主席樹)陣列
- 樹狀陣列模板題 & (樹狀陣列 1:單點修改,區間查詢)陣列
- 樹狀陣列和逆序對陣列
- hdu 5147 樹狀陣列陣列
- 樹狀陣列快速入門陣列