poj 2481
2013-11-10 16:46
204 查看
树状数组 与star类似
/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年11月10日 星期日 15时35分23秒 ************************************************************************/ #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <queue> #include <stack> #include <set> #include <cstdlib> #define N 100009 #define M 1000000007 using namespace std; struct Node { int x, y, z; bool operator < (const Node& p) const { if(y != p.y) return y > p.y; return x < p.x; } }; Node cow ; int a , level , n; int lowbit(int x) { return x&-x; } int sum(int x) { int ret = 0; while(x > 0) ret += a[x], x -= lowbit(x); return ret; } void add(int x) { while(x < N) a[x]++, x += lowbit(x); } int main() { while(scanf("%d",&n) && n) { for(int i = 0 ; i < n; i++) { scanf("%d%d",&cow[i].x, &cow[i].y); cow[i].x++; cow[i].y++; cow[i].z = i; } memset(a, 0, sizeof(a)); sort(cow, cow+n); for(int i = 0; i < n; i++) { if(i && cow[i].x == cow[i-1].x && cow[i].y == cow[i-1].y) level[cow[i].z] = level[cow[i-1].z]; else level[cow[i].z] = sum(cow[i].x); add(cow[i].x); } printf("%d", level[0]); for(int i = 1; i < n; i++) printf(" %d", level[i]); puts(""); } return 0; }
相关文章推荐
- POJ 2481:Cows 树状数组
- poj 2481 Cows(哇咔咔,树状数组^ ^)
- POJ 2481 Cows
- POJ 2481 Cows 树状数组
- POJ2481 Cows
- [树状数组] poj 2481 Cows
- poj2481之线段树单点更新
- POJ - 2481 - Cows (树状数组+排序!!)
- POJ 2481 Cows 树状数组
- POJ(2481)Cows 树状数组
- POJ 2481 Cows && POJ 2352 Stars(树状数组妙用)
- POJ:2481 Cows
- POJ - 2481 Cows(树状数组)
- poj 2481 树状数组
- poj 2481 Cows 树状数组+逆序对变形
- POJ-2481 Cows
- poj 2481 Cows(树状数组)
- http://poj.org/problem?id=2481 树状数组+优先队列
- POJ 2481 Cows 树状数组
- POJ 2481