(线段树 -星星等级)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周从下往上的扫描线进行扫描,第一下 ...
随机推荐
- 微信小程序入门讲解
微信小程序 注册 由于发文限制,请自行到微信公众平台注册 项目结构 project.config.json 配置文件(不需要动) app.json(用户配置) 路由pages window 整个程序样 ...
- CentOS7 安装python 3.5 及 pip安装
1.CentOS7 安装Python 的依赖包 # yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-d ...
- Docker实战之Zookeeper集群
1. 概述 这里是 Docker 实战系列第四篇.主要介绍分布式系统中的元老级组件 Zookeeper. ZooKeeper 是一个开源的分布式协调服务,是 Hadoop,HBase 和其他分布式框架 ...
- Think 框架漏洞利用
下午有点闲,又没有女朋友陪,该干嘛呢??? 对了,做安全的是不需要女朋友的,哈哈哈哈哈 废话不多说,本机搭建环境: 首先nmap扫描一下,哦哈,有点东西. 开的端口有点多,这个时候有点窃喜,开的端口太 ...
- 后渗透阶段之基于MSF的路由转发
目录 反弹MSF类型的Shell 添加内网路由 MSF的跳板功能是MSF框架中自带的一个路由转发功能,其实现过程就是MSF框架在已经获取的Meterpreter Shell的基础上添加一条去往“内网” ...
- http面试问题集锦
1.http的请求报文和响应报文? http请求报文:请求行(请求方法+url).请求头,请求体 http响应报文:状态行(http版本+状态码).响应头.响应体 2.常用的http请求类型? 请 ...
- Vue2.0组件的继承与扩展
如果有需要源代码,请猛戳源代码 希望文章给大家些许帮助和启发,麻烦大家在GitHub上面点个赞!!!十分感谢 前言 本文将介绍vue2.0中的组件的继承与扩展,主要分享slot.mixins/exte ...
- 前端复习笔记--1.html标签复习速查
概览 文档章节 <body> <header> <nav> 导航 <aside> 表示和主要内容不相关的区域 <article> 表示一个独 ...
- angular 动态绑定class 写法
[ngClass]="{'aaa':true,'bbb':!true}" 这个是正确的 [ngClass]="{ true ? 'aaa':'bbb'}" ...
- Spring Boot从入门到精通(九)整合Spring Data JPA应用框架
JPA是什么? JPA全称Java Persistence API,是Sun官方提出的Java持久化规范.是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. ...