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

题意:


夜空中有N颗恒星(N≤100000),每颗恒星具有其坐标(x, y)(0≤x, y≤100000)。现在,天文学家要对这些恒星进行分类,分类的标准如下:对于任意一颗恒星S(x,y),如果存在k颗恒星,其x, y坐标均不大于S,则恒星S属于k类星。
如下图所示:第5颗恒星为3类星,这是由1、2、4三颗恒星均在其左下方而得出的,类似地第2、4两颗恒星为1类星,第3颗恒星为2类星。因此在这幅图中只有一颗0类星,共有二颗1类星,2类星和3类星各有一颗。
现给出N颗恒星的坐标,要求统计出0~N-1类星的个数。(翻译摘自博主moep0)

解题思路:


对恒星按照x,y排序, 拍完序后已经保证了对于任意的i<j,Xi<Xj,所以只需要对y进行分析

对于一个y值yi,对于任意的i<j且Yj大于等于Yi的恒星来说,对应的k类星的k值要加一,这就相当于update函数

求k类星有多少个相当于getsum函数

ac代码:


#include <iostream>
#include <algorithm>
#include <string.h>
#include <ctype.h>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <fstream>
#define  maxn 100005
#define lowbit(x) ((x)&(-x))
typedef long long ll;
using namespace std;
ll n,a,b,maxy=0,c[maxn]={0},ans[maxn]={0};
struct node{ll x,y;friend bool operator <(node a,node b){return  a.x==b.x?a.y<b.y:a.x<b.x;}
}s[maxn];
void update(ll pos)
{for(ll i=pos;i<=maxy;i+=lowbit(i))c[i]++;
}
ll getsum(ll pos)
{ll sum=0;for(ll i=pos;i>0;i-=lowbit(i))sum+=c[i];return sum;
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld %lld",&a,&b);s[i].x=++a;s[i].y=++b;maxy=max(maxy,s[i].y);}sort(s+1,s+1+n);for(ll i=1;i<=n;i++){ll k=getsum(s[i].y);ans[k]++;update(s[i].y);}for(ll i=0;i<n;i++)printf("%lld\n",ans[i]);return 0;
}

【POJ2352】Stars(树状数组模版题)相关推荐

  1. POJ2352 stars(树状数组)

    题目:Stars #include <stdio.h> #include <string.h> const int N = 32005; int C[N]; int level ...

  2. poj2352(树状数组)

    题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...

  3. hdu1166敌兵布阵 树状数组裸题

    树状数组裸题 动态更新区间内的点,动态查询区间和 敌兵布阵 ac代码 #include<iostream> #include<algorithm> #include<cs ...

  4. 树状数组板子题之一:hdu 1166 敌兵布阵

    树状数组板子题之一:hdu 1166 敌兵布阵 题目链接:hdu 1166 敌兵布阵 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手 ...

  5. POJ 2481 Cows POJ 2352 Stars(树状数组妙用)

    题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...

  6. HDU-1541 Stars 树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1541 题义为给定N个点按照先x轴,后y轴坐标排序,求某一点的左下角的星星数量,刚开始用二维的树状数组来做,结果肯 ...

  7. HDU1166 敌兵布阵(树状数组模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. hdu 1166 敌兵布阵 树状数组 模板题

    这题是树状数组入门的一模板题,非常基础,被小白成为"赤裸裸"的入门题,哈哈,一个plus,一个sum全部搞定 #include<stdio.h> #include< ...

  9. 【树状数组 思维题】luoguP3616 富金森林公园

    树状数组.差分.前缀和.离散化 题目描述 博艾的富金森林公园里有一个长长的富金山脉,山脉是由一块块巨石并列构成的,编号从1到N.每一个巨石有一个海拔高度.而这个山脉又在一个盆地中,盆地里可能会积水,积 ...

  10. acwing-241. 楼兰图腾-树状数组板子题+开脑洞

    原题链接 题意:给你一组数,让你找出所有aiak的个数与ai>aj<ak的个数. 思路: 看到这个题瞬间想到了三层的暴力(暴力破万物),但是n是200000,跑三层服务器会跑吐的,必然超时 ...

最新文章

  1. 我在定制office 2007时遇到的问题
  2. android开发Proguard混淆与反射
  3. Sklearn参数详解--决策树
  4. java 获取mac地址 乱码_Java:开机获取Mac地址问题
  5. 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机
  6. 为什么配置了vsftpd.conf文件,用户还是可以访问上级目录?
  7. Java并发编程实战~Immutability模式
  8. Apache/Tomcat/JBOSS/Nginx(2)
  9. 多类目MoE模型在京东电商搜索中的应用
  10. Hosts 文件作用及如何修改
  11. java udp转发_JAVA NIO udp 实现 群转发
  12. 20条常用微信沟通技巧,微信聊天必备
  13. 双月学习OKR(67月)
  14. Python 实现按键精灵的功能,超简单详细(Windows版)
  15. 使用Metasploit对MSSQL渗透测试步骤——学习笔记
  16. 关于iPad程序如何强制横屏
  17. 创建添加学生信息的vue实例
  18. paddlepaddle 实现AlexNet模型,复现原创论文
  19. 如何用Stm32读取NPN型颜色传感器
  20. Windows下用docker打包镜像

热门文章

  1. vm-tools install for linux
  2. 66、加一(python)
  3. php强制浏览器不缓存,php强制浏览器不缓存和设置浏览器缓存
  4. spring boot项目发送邮件
  5. vue 修改路由名字_Vue 路由设置title
  6. sqlserver 2000 安装后本机如何连接_3030铝型材框架上的角槽连接件是如何安装固定的?...
  7. 信息网络传播中的服务器标准,信息网络传播权的服务器标准与实质替代标准之争...
  8. lisp封装成vla函数_牛逼,自动将函数或者命令行工具转换成 Web 服务
  9. 文件共享文件传输samba ftp nfs
  10. OpenCV 使用 FLANN 库实现特征匹配