首页 > 其他 > 详细

Stars(树状数组)

时间:2014-01-17 08:54:54      阅读:384      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=2352

题意:给出每个星星在平面内的坐标(x,y)(y递增,y相同时,x递增)。每颗星星的级别定义为,横纵坐标均不超过自己的星星个数(不包括自己),求级别为0~N-1的星星分别有多少个。

bubuko.com,布布扣
 1 #include <stdio.h>
 2 const int N=32001;
 3 int n,c[N],level[N];
 4 int lowbit(int x)
 5 {
 6     return x&(-x);
 7 }
 8 int sum(int x)//求和
 9 {
10     int s = 0;
11     while(x>0)
12     {
13         s += c[x];
14         x -= lowbit(x);
15     }
16     return s;
17 }
18 void update(int pos)//更新
19 {
20     while(pos <= N)
21     {
22         c[pos]++;
23         pos += lowbit(pos);
24     }
25 }
26 int main()
27 {
28     int x,y;
29     scanf("%d",&n);
30     for (int i = 1; i <= n; i++)
31     {
32         scanf("%d %d",&x,&y);
33         level[sum(x+1)]++;//树状数组的下标从一开始,故所有横坐标右移一位,相对位置不变
34         update(x+1);
35     }
36     for (int i = 0; i < n; i++)
37         printf("%d\n",level[i]);
38     return 0;
39 }
View Code

Stars(树状数组)

原文:http://www.cnblogs.com/lahblogs/p/3522912.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!