您的位置:首页 > 其它

poj 2352 Stars (树状数组 + 1)

2012-09-07 21:25 573 查看
/*
Subject: 树状数组
Author : a_clay
Created Date : 2012-02-02
Sample : poj 2352 Stars
*/
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
#include <queue>
#include <algorithm>
#define Bug cout << "here\n";

using namespace std;
const int N = 15005;
const int M = 32005;

int B[M];
int cnt
;
int n, T, k;

int lowbit(int x) {
return x & (-x);
}

void add(int i, int x) {
while(i <= M) { // 注意, 不是 n, 是 M
B[i] += x;
i = i + lowbit(i);
}
} //得到 Bn

long long getsum(int i) {
long long sum = 0;
while(i > 0) {
sum += B[i];
i = i - lowbit(i);
}
return sum;
}
int main() {
int x, y, i;
memset(cnt, 0, sizeof(cnt));
memset(B, 0, sizeof(B));
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d%d", &x, &y);
cnt[getsum(++x)]++;
add(x, 1);
}
for(i = 0; i < n; i++) {
cout << cnt[i] << endl;
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system date