关闭

poj 2352 Stars(树状数组)

标签: poj-2352Stars树状数组
199人阅读 评论(0) 收藏 举报
分类:

Stars

Description

Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and not to the right of the given star. Astronomers want to know the distribution of the levels of the stars.
这里写图片描述

For example, look at the map shown on the figure above. Level of the star number 5 is equal to 3 (it’s formed by three stars with a numbers 1, 2 and 4). And the levels of the stars numbered by 2 and 4 are 1. At this map there are only one star of the level 0, two stars of the level 1, one star of the level 2, and one star of the level 3.

You are to write a program that will count the amounts of the stars of each level on a given map.
Input

The first line of the input file contains a number of stars N (1<=N<=15000). The following N lines describe coordinates of stars (two integers X and Y per line separated by a space, 0<=X,Y<=32000). There can be only one star at one point of the plane. Stars are listed in ascending order of Y coordinate. Stars with equal Y coordinates are listed in ascending order of X coordinate.
Output

The output should contain N lines, one number per line. The first line contains amount of stars of the level 0, the second does amount of stars of the level 1 and so on, the last line contains amount of stars of the level N-1.
Sample Input

5
1 1
5 1
7 1
3 3
5 5
Sample Output

1
2
1
1
0

题意:如果一个点的左下方有n个点,那么他就属于leveln,比如说点(1,1)的左下方有0个点,那么他就属于level0了。最后分别输出level0有多少个,level1有多少个………level(n-1)有多少个(题目的输入是按如果y轴相等则按x轴升序,否则按y轴升序输入)

思路:基本的树状数组操作,注意坐标有可能为0,所以加的时候把每一位都加1

代码:

#include<stdio.h>
#include<string.h>

#define maxn 32005

int a[maxn],level[maxn];
int n,m;
struct node
{
    int x,y,pos;
} q[maxn];

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

void add(int i,int x)
{
    while(i<=32001)//注意这里
    {
        a[i]+=x;
        i+=lowbit(i);
    }
}

int getsum(int i)
{
    int sum=0;
    while(i)
    {
        sum+=a[i];
        i-=lowbit(i);
    }
    return sum;
}

int main()
{
    scanf("%d",&n);
    int x,y;
    for(int i=0; i<n; ++i)
    {
        scanf("%d%d",&x,&y);
        ++level[getsum(x+1)];
        add(x+1,1);
    }
    for(int i=0; i<n; ++i)
        printf("%d\n",level[i]);
    return 0;
}
1
0
查看评论

POJ-2352 Stars【树状数组】

题目链接:http://poj.org/problem?id=2352 题目大意: 给你星星的坐标(y递增,若y相等,x递增),每个星星都有一个等级,规定它的等级就是在它左下方的星星的个数。输入所有星星后,依次输出等级为0到n-1的星星的个数。 解题思路: 就是统计x前面比它小的星星的个数,...
  • niushuai666
  • niushuai666
  • 2012-03-24 07:54
  • 2800

Poj(2352)——Stars(树状数组)

Description Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the l...
  • ACMer_hades
  • ACMer_hades
  • 2015-05-30 15:31
  • 838

POJ2352:Stars(树状数组)

Description Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the l...
  • libin56842
  • libin56842
  • 2015-06-21 16:44
  • 1534

POJ-2352-Stars

POJ-2352-Stars http://poj.org/problem?id=2352 给出n个星星的坐标,如果一个星星的左下方(包含正左和正下)有k颗星星,就说这颗星星是k级的,统计每个等级有多少个点。这题可用树状数组,对于每个星星按y坐标从小到大排序,相同y坐标按x坐标从小到大排序(题目...
  • Cambridgeacm
  • Cambridgeacm
  • 2012-07-22 15:15
  • 1421

[ACM] hdu 2352 Stars (树状数组)

Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30272   Accepted: 13206 Description Astronome...
  • sr19930829
  • sr19930829
  • 2014-04-19 20:53
  • 1423

poj 2352 Stars(树状数组 or 线段树)

链接: http://poj.org/problem?id=2352 题目大意: 在坐标上有n个星星,如果某个星星坐标为(x, y), 它的左下位置为:(x0,y0),x0 按照y递增,如果y相同则x递增的顺序给出n个星星,求出所有level水平的数量。 分析与总结: ...
  • shuangde800
  • shuangde800
  • 2012-11-12 17:21
  • 5684

POJ2352 Stars 【树状数组】or【线段树】

Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 31172   Accepted: 13595 ...
  • u012846486
  • u012846486
  • 2014-07-13 11:41
  • 955

POJ - 2352 Stars (树状数组)

题意:给你星星的坐标(Y递增,若Y相等则X递增),每个星星有个等级,规定它的等级是它左下方的星星个数,输出所有星星的等级 思路:树状数组 #include #include #include #include using namespace std; const int MAXN = 3...
  • u011345136
  • u011345136
  • 2014-03-03 23:25
  • 818

poj 2352 Stars (树状数组)

我的第一道树状数组哇咔咔~~~~~~~~~ 大一
  • u012841845
  • u012841845
  • 2014-08-06 11:50
  • 440

POJ 2352 Stars 树状数组

题目:http://poj.org/problem?id=2352 题意:给出一些星星的坐标,按y坐标升序给出,若y坐标相等按照x升序给出。每个星星有一个水平,就是这颗星星左下方的星星数目。输出所有水平的个数 思路:因为是按y坐标升序给出的,所以当前星星的左下方星星一定给出过了,忽略y坐标,也是...
  • discreeter
  • discreeter
  • 2016-08-07 09:22
  • 218
    阶段性抽风
    不被嘲笑的梦想就没有实现的价值
    个人资料
    • 访问:140494次
    • 积分:5829
    • 等级:
    • 排名:第5260名
    • 原创:410篇
    • 转载:35篇
    • 译文:0篇
    • 评论:20条
    博客专栏
    ACM

    文章:332篇

    阅读:99388