(线段树 -星星等级)Stars POJ - 2352
题意:
给出n个星星的坐标 x,y ,当存在其他星星的坐标x1,y1满足x>=x1&&y>=y1时 这个星星的等级就加1。
注意:
题中给的数据是有规律的 ,y是逐渐增加的 ,若y相等时x是逐渐增加的 。
思路:
~~怎么都没想到是线段树 ~~
因为当前给的坐标的yn 一定大于等于之前的y,那么只需要看之前有多少个小于xn 的坐标即可 (说白了就不用考虑y),这一步用线段树来实现:
对于每个xi 查询1到xi 的横坐标有多少个,那么怎么对x进行计数呢?对与每个xi 更新区间x->max(就是32000)进行加1操作 ,那么对于后面大于xi 的横坐标只需要单点查询它的xn 坐标 被加了多少次即可 ,即代码中的sum[o],就是i号星星的等级
上代码:
//A code block
#include<iostream>
#include<stdio.h>
using namespace std;
int n,m,lazy[150005],sum[150005];/*区间最大值 不断加1*/
void pushdown(int l,int r,int o)
{
if(lazy[o])
{
lazy[o<<1|1]+=lazy[o];
lazy[o<<1]+=lazy[o];
sum[o<<1|1]+=lazy[o];
sum[o<<1]+=lazy[o];
lazy[o]=0;
}
}
void update(int x,int y,int l,int r,int o)
{
if(x<=l&&y>=r)
{
sum[o]++;
lazy[o]++;
return ;
}
pushdown(l,r,o);
int mid=(l+r)>>1;
if(x<=mid) update(x,y,l,mid,o<<1);
if(y>mid) update(x,y,mid+1,r,o<<1|1);
sum[o]=max(sum[o<<1],sum[o<<1|1]);
return ;
}
int k=0;
void query(int x,int y,int l,int r,int o)
{
if(x<=l&&y>=r)
{
k=max(sum[o],k);
return ;
}
pushdown(l,r,o);
int mid=(l+r)>>1;
if(x<=mid) query(x,y,l,mid,o<<1);
if(y>mid) query(x,y,mid+1,r,o<<1|1);
return ;
}
int main()
{
while(~scanf("%d",&m))
{
int x,y,grade[15010],maxx=32005;
for(int i=0;i<=15000;i++)
grade[i]=0;
for(int i=0;i<=150000;i++)
lazy[i]=sum[i]=0;
for(int i=1;i<=m;i++)
{
k=0;
scanf("%d%d",&x,&y);
x++,y++;
query(1,x,1,maxx,1);
grade[k]++;
update(x,maxx,1,maxx,1);
}
for(int i=0;i<m;i++)
printf("%d\n",grade[i]);
}
return 0;
}
var foo = 'bar';
(线段树 -星星等级)Stars POJ - 2352的更多相关文章
- 线段树 + 区间更新 + 模板 ---- poj 3468
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 59798 ...
- 线段树(成段更新) POJ 3468 A Simple Problem with Integers
题目传送门 /* 线段树-成段更新:裸题,成段增减,区间求和 注意:开long long:) */ #include <cstdio> #include <iostream> ...
- 【树状数组】 poj 2352
题意:给出n个平面二维坐标,对于每个坐标,如果这个坐标跟(0,0)形成的矩形内包含的点数为 k (包含边界,但不包含坐标本身),那么这个坐标就是 level k.输出level 0 - n-1的点数分 ...
- 线段树扫描线总结(POJ 1389)
扫描线算是线段树的一个比较特殊的用法,虽然NOIP不一定会考,但是学学还是有用的,况且也不是很难理解. 以前学过一点,不是很透,今天算是搞懂了. 就以这道题为例吧:嘟嘟嘟 题目的意思是在一个二维坐标系 ...
- 【树状数组】POJ 2352 Stars
/** * @author johnsondu * @time 2015-8-22 * @type Binary Index Tree * ignore the coordinate of y and ...
- Stars POJ - 2352
Astronomers often examine star maps where stars are represented by points on a plane and each star h ...
- (线段树)Balanced Lineup --POJ --3264
链接: 对于POJ老是爆,我也是醉了, 链接等等再发吧! http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82832#problem/G 只 ...
- 线段树(倒序操作):POJ 2828 Buy Tickets
Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in China, ...
- 求矩形的周长(线段树+扫描线) Picture POJ - 1177
题目链接:https://cn.vjudge.net/problem/POJ-1177 题目大意:求矩形外部的周长 具体思路:借用一下bin巨的一张图片. 我们按照y周从下往上的扫描线进行扫描,第一下 ...
随机推荐
- jvm GC算法和种类
1.GC 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟 ...
- MySQL集群MGR架构for多主模式
本文转载自: https://www.93bok.com MGR简介 MySQL Group Replication(简称MGR)是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决 ...
- python自动化第二课 - python基础2
1.判断奇数偶数 num = input("请输入一个数字,判断是否为偶数:") print(not int(num) % 2) 2.浮点数的高精度计算用Decimal(from ...
- NSFileHandle的用法(用于读写文件)
利用NSFilehandle类提供的方法,允许更有效地使用文件. 一般而言,处理文件时都要经历以下三个步骤: 1.打开文件,并获取一个NSFileHandle对象,以便在后面的I/O操作中引用该文件 ...
- Nginx之负载均衡配置(二)
前文我们聊到了nginx作为负载均衡的配置,前端nginx作为调度器调度http或https请求,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12458159 ...
- django 从零开始 11 根据时间戳加密数据
django自带一个加密的方法signer,对数据进行一个加密 一般这种方式用于账号密码邮箱找回,或者token设置 class TimestampSigner(Signer): def timest ...
- flink RPC(akka)
flink中的rpc框架使用的akka.在本节并不详细讲述akka,而是就flink中rpc来讲述akka的部分内容.本节,我从AkkaRpcActor.handleRpcInvocation方法讲起 ...
- Flink系列之1.10版流式SQL应用
随着Flink 1.10的发布,对SQL的支持也非常强大.Flink 还提供了 MySql, Hive,ES, Kafka等连接器Connector,所以使用起来非常方便. 接下来咱们针对构建流式SQ ...
- Robotutor Scratch3.0 在线编程平台升级啦!
Robotutor推出的Scratch3.0在线编程平台受到很多编程老师和学员的喜爱,上一个版本我们提供了用户注册,找回密码,个人项目的在线保存和浏览,社区分享评论. 我们根据实际的教学需要,用户角色 ...
- SQLserver用Image格式储存图片
前言 最近项目更新一个新需求,要求把图片储存在SQLserver中,而不是储存在本地磁盘.很好,又有新东西可以学了. 正文 一.建表 这里大概建几个字段演示一下 CREATE TABLE [dbo]. ...