码迷,mamicode.com
首页 > 其他好文 > 详细

POJ2352 Stars (静态二叉检索树)

时间:2017-09-16 17:08:39      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:span   color   等于   等级   ios   clu   const   can   问题   

https://vjudge.net/problem/POJ-2352

分析:
由于是按照y坐标的升序,y坐标向等的按x的升序的顺序给出星星。那么某个星星的等级数就是在他前面x坐标小于等于他的x坐标的星星的个数。
暴力的时间复杂度为n^2,超时
所以我们要记录前面所有x坐标出现的次数。然后要求出[0,xi]出现的和。
这就是静态二叉检索树 的标准问题了。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

const int maxx=32010;
const int maxn=15010;
int c[maxx];
int level[maxn];

int sum(int x)
{
    int res=0;
    while(x)
    {
        res+=c[x];
        x-=(x&-x);
    }
    return res;
}
void add(int x,int d)
{
    while(x<=maxx)
    {
        c[x]+=d;
        x+=(x&(-x));
    }
}
int main()
{
    int x,y,n;
    scanf("%d",&n);
    memset(c,0,sizeof(c));
    memset(level,0,sizeof(level));
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&x,&y);
        level[sum(x+1)]++;
        add(x+1,1);
    }
    for(int i=0;i<n;i++)
        printf("%d\n",level[i]);
    return 0;
}

 

POJ2352 Stars (静态二叉检索树)

标签:span   color   等于   等级   ios   clu   const   can   问题   

原文地址:http://www.cnblogs.com/YingZhixin/p/7531588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!