Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 42707 | Accepted: 18587 |
Description
Input
Output
Sample Input
5 1 1 5 1 7 1 3 3 5 5
Sample Output
1 2 1 1 0
Hint
Source
/* 题意给你n个星星的坐标,每一个星星的等级为:在不在这个星星右边并且不比这个星星高的星星的个数 然后出处每个等级星星的个数 树状数组,一开始把上一个题的模板扒过来的......真是伤啊,这个题更新点的时候要把右边的点更新到MAXN要不然会漏掉条件的 */ #include<iostream> #include<stdio.h> #include<string.h> #include<string> #include<algorithm> #define N 32010 using namespace std; int n; int c[N]; int cur[N];//统计每个等级的星星 int lowbit(int x) { return x&(-x); } int getx(int x) { int ans=0; while(x>0) { ans+=c[x]; x-=lowbit(x); } return ans; } void update(int x) { while(x<=N) { c[x]++; x+=lowbit(x); } } int main() { //freopen("in.txt","r",stdin); int x,y; while(scanf("%d",&n)!=EOF&&n) { memset(cur,0,sizeof cur); memset(c,0,sizeof c); for(int i=1;i<=n;i++) { scanf("%d%d",&x,&y); update(x+1); //for(int j=1; j<=n; j++) // cout<<c[j]<<" "; //cout<<endl; //cout<<getx(x+1)-1<<endl; cur[getx(x+1)-1]++; } //cout<<endl; for(int i=0;i<n;i++) printf("%d\n",cur[i]); } return 0; } /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---‘\____ .‘ \\| |// `. / \\||| : |||// / _||||| -:- |||||- | | \\\ - /// | | | \_| ‘‘\---/‘‘ | | \ .-\__ `-` ___/-. / ___`. .‘ /--.--\ `. . __ ."" ‘< `.___\_<|>_/___.‘ >‘"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / / ======`-.____`-.___\_____/___.-`____.-‘====== `=---=‘ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I have a dream!A AC deram!! orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz orz */
原文:http://www.cnblogs.com/wuwangchuxin0924/p/5854596.html