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

Astronomers晚上仰望星空,看到了很多星星。回到办公桌,Astronomers将这些星星画到二维坐标系,每个星星的坐标都是整数。例如5个星星,坐标分别为(1,1), (5,1), (7,1), (3,3), (5,5):

Astronomers想对这些星星定等级,规则是这样的:每个星星左下角有几个星星,它就算几级(包含左边和下面)。上面的例子,第1颗星星的等级为0,等2颗星星的等级为1,第3颗星星的等级为2,第4颗星星的等级为1,第5颗星星的等级为3。

所以,等级为0的星星有1颗,等级为1的星星有2颗,等级为2的星星有1颗,等级为3的星星有1颗,等级为4的星星为0颗。

给定N个星星坐标,没有两个星星坐标在一起,问你等级为0~N-1的星星数量是多少。

首先对于星星坐标按照先y后x排序,然后按照x的坐标加星星个数统计即可。

****注意星星坐标可能从0开始,所以最开始我们对坐标+1。

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
inline ll read(){
int X=,w=; char ch=;
while(ch<''||ch>''){w|=ch=='-';ch=getchar();}
while(ch>=''&&ch<='')X=(X<<)+(X<<)+(ch^),ch=getchar();
return w?-X:X;
}
const int N=;
struct node{
int x;
int y;
}star[];
bool cmp(node a,node b){
if(a.y<b.y)return ;
if(a.y>b.y)return ;
if(a.x<b.x)return ;
return ;
}
int n,m;
ll tree[N];
ll ans[];
inline int lowbit(int t){return t&(-t);}
void add(int x,int y){
for(int i=x;i<=N;i+=lowbit(i))tree[i]+=y;
return;
}
ll query(int x){
ll res=;
for(int i=x;i>;i-=lowbit(i))res+=tree[i];
return res;
}
int main(){
n=read();
for(int i=;i<=n;i++){
star[i].x=read()+;
star[i].y=read()+;
}
sort(star+,star+n+,cmp);
for(int i=;i<=n;i++){
int t=query(star[i].x);
ans[t]++;
add(star[i].x,);
}
for(int i=;i<n;i++){
printf("%lld\n",ans[i]);
}
return ;
}

POJ2352:Stars——题解的更多相关文章

  1. POJ-2352 Stars 树状数组

    Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39186 Accepted: 17027 Description A ...

  2. poj2352 Stars【树状数组】

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...

  3. POJ2352 Stars 树状数组

    emm,ssy说可以直接CDQ分治...%%%但是注意到y是有序的,所以可以直接求一下前缀和就行了. 题干: Astronomers often examine star maps where sta ...

  4. POJ2352 Stars [树状数组模板]

    题意:输入一n颗星星的x,y坐标,给定判断level的标准,即某颗星星左下边(不高于它,不超过他,相当于以他为基准的第三象限)星星的数目为level, 输出level从0到n的星星个数. //poj2 ...

  5. POJ2352 Stars (静态二叉检索树)

    https://vjudge.net/problem/POJ-2352 分析: 由于是按照y坐标的升序,y坐标向等的按x的升序的顺序给出星星.那么某个星星的等级数就是在他前面x坐标小于等于他的x坐标的 ...

  6. poj2352 Stars

    http://poj.org/problem?id=2352 #include <cstdio> #include <cstring> #define maxn 400000 ...

  7. 【二维偏序】【树状数组】【权值分块】【分块】poj2352 Stars

    经典问题:二维偏序.给定平面中的n个点,求每个点左下方的点的个数. 因为 所有点已经以y为第一关键字,x为第二关键字排好序,所以我们按读入顺序处理,仅仅需要计算x坐标小于<=某个点的点有多少个就 ...

  8. [POJ2352] Stars(树状数组)

    传送门 先按照下标x排序,然后依次把y加入树状数组,边加入边统计即可. 注意下标re从零开始,需+1s ——代码 # include <iostream> # include <cs ...

  9. 树状数组 poj2352 Stars

    2019-05-20 22:52:07 加油,坚持,加油,坚持 !!! #include<iostream> #include<cstdio> #include<cstr ...

随机推荐

  1. 深入解析UUID及其应用(转载)

    UUID 编辑 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...

  2. dva webpack 利用require.context加载多个model

    dva redux数据管理都在models,根据业务不同models可能会有几十甚至上百的 [模块.js], 每次在index.js使用 app.model(require('./models/exa ...

  3. <cassert>

    文件名:  <cassert> (assert.h) 这是一个C语言的诊断库,assert.h文件中定义了一个可作为标准调试工具的宏函数: assert ; 下面介绍这个宏函数:asser ...

  4. 基于 CPython 解释器,为你深度解析为什么Python中整型不会溢出

    前言 本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后, ...

  5. 搜索二维矩阵 II

    描述 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没有重复的整数. 样例 ...

  6. Memcache的客户端连接系列(二) Python

    关键词: Memcached   Python 客户端 声明:本文并非原创,转自华为云帮助中心的分布式缓存服务(Memcached)的用户指南.客户端连接方法通用,故摘抄过来分享给大家. Python ...

  7. vim—自动缩进(编写Python脚本)

    大神推荐使用vim编写Python脚本,学而时积之,不亦乐乎! 使用vim编写Python脚本的时候不能正常缩进,需要修改vimrc文件 Ubuntu系统下vimrc文件的位置: $ cd /etc/ ...

  8. New Year and Old Property :dfs

    题目描述: Limak is a little polar bear. He has recently learnt about the binary system. He noticed that ...

  9. java一些面试题

    java虚拟机 什么时候会触发full gc System.gc()方法的调用 老年代空间不足 永生区空间不足(JVM规范中运行时数据区域中的方法区,在HotSpot虚拟机中又被习惯称为永生代或者永生 ...

  10. Python中如何Getting Help

    在Python中Gettting Help有如下两种方法: 1 使用dir函数,dir的参数可以是一个真正的对象实例,也可以是一个数据类型,无论哪种情形,dir函数都返回与这个对象或者数据类型相关联的 ...