【NOIP模拟赛】天神下凡 动态开点线段树
这些圆一定是在同一水平面上的,由于他们没有相交,因此我们发现他们每个人与外界关系可以分为,1.存在并圈圈 2.存在圈圈并被割,因此我们把所有的圆都加1,把被割的在加1,就可以啦,因此我们开一个线段树,维护一段区间有没有被全部覆盖
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#define R register
#define MAXN 300000
using namespace std;
typedef unsigned long UI;
struct O
{
UI x,r;
}o[MAXN+];
int n;
int comp(const O a,const O b)
{
return a.r<b.r;
}
struct Seg_Tree
{
bool cover;
UI l,r,mid;
Seg_Tree *ch[]; }*root;
inline Seg_Tree *New(UI l,UI r)
{
R Seg_Tree *p=new Seg_Tree;
p->cover=;
p->l=l;
p->r=r;
p->mid=((long long)l+r)>>;
p->ch[]=p->ch[]=NULL;
return p;
}
bool query(Seg_Tree *p,UI l,UI r)
{
if(p->cover)return ;
if(l<=p->l&&p->r<=r)return p->cover;
R bool ans=;
if(l<=p->mid)
{
if(!p->ch[])return ;
else ans&=query(p->ch[],l,r);
}
if(p->mid<r)
{
if(!p->ch[])return ;
else ans&=query(p->ch[],l,r);
}
return ans;
}
void ins(Seg_Tree *p,UI l,UI r)
{
if(p->cover)return;
if(l<=p->l&&p->r<=r)
{
p->cover=;
return;
}
if(l<=p->mid)
{
if(!p->ch[]) p->ch[]=New(p->l,p->mid);
ins(p->ch[],l,r);
}
if(p->mid<r)
{
if(!p->ch[]) p->ch[]=New(p->mid+,p->r);
ins(p->ch[],l,r);
}
if(p->ch[]&&p->ch[])p->cover=p->ch[]->cover&p->ch[]->cover;
}
inline void Init()
{
scanf("%d",&n);
for(R int i=;i<=n;i++)
{
R int x,r;
scanf("%d%d",&x,&r);
o[i].x=(long long)x+;
o[i].r=r;
}
sort(o+,o+n+,comp);
root=New(,4000000010LL);
}
inline void work()
{
R int ans=;
for(int i=;i<=n;i++)
{
++ans;
if(query(root,o[i].x-o[i].r,o[i].x+o[i].r))++ans;
ins(root,o[i].x-o[i].r,o[i].x+o[i].r);
}
printf("%d",ans);
}
int main()
{
Init();
work();
return ;
}
【NOIP模拟赛】天神下凡 动态开点线段树的更多相关文章
- NFLSOJ #917 -「lych_cys模拟题2018」橘子树(树剖+ODT+莫反统计贡献的思想+动态开点线段树)
题面传送门 sb 出题人不在题面里写 \(b_i=0\) 导致我挂成零蛋/fn/fn 首先考虑树链剖分将路径问题转化为序列上的问题,因此下文中简称"位置 \(i\)"表示 DFS ...
- HDU 6183 Color it(动态开点线段树)
题目原网址:http://acm.hdu.edu.cn/showproblem.php?pid=6183 题目中文翻译: Time Limit: 20000/10000 MS (Java/Others ...
- Luogu P3960 列队(动态开点线段树)
P3960 列队 题意 题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia所在的方阵中有\(n \times m ...
- [2016湖南长沙培训Day4][前鬼后鬼的守护 chen] (动态开点线段树+中位数 or 动规 or 贪心+堆优化)
题目大意 给定一个长度为n的正整数序列,令修改一个数的代价为修改前后两个数的绝对值之差,求用最小代价将序列转换为不减序列. 其中,n满足小于500000,序列中的正整数小于10^9 题解(引自mzx神 ...
- [bzoj 3531][SDOI2014]旅行(树链剖分+动态开点线段树)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3531 分析: 对于每个颜色(颜色<=10^5)都建立一颗线段树 什么!那么不是M ...
- 【BZOJ-4636】蒟蒻的数列 动态开点线段树 ||(离散化) + 标记永久化
4636: 蒟蒻的数列 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 247 Solved: 113[Submit][Status][Discuss ...
- codeforces 893F - Physical Education Lessons 动态开点线段树合并
https://codeforces.com/contest/893/problem/F 题意: 给一个有根树, 多次查询,每次查询对于$x$i点的子树中,距离$x$小于等于$k$的所有点中权值最小的 ...
- codeforces 915E - Physical Education Lessons 动态开点线段树
题意: 最大$10^9$的区间, $3*10^5$次区间修改,每次操作后求整个区间的和 题解: 裸的动态开点线段树,计算清楚数据范围是关键... 经过尝试 $2*10^7$会$MLE$ $10^7$会 ...
- CF915E Physical Education Lessons 动态开点线段树
题目链接 CF915E Physical Education Lessons 题解 动态开点线段树 代码 /* 动态开点线段树 */ #include<cstdio> #include&l ...
随机推荐
- 转自 阿里云技术文档的 centos + PHP 环境 搭建
产品亮点 1.基于阿里云CentOS7.2镜像 2.采用yum方式安装,软件安装均为默认目录,未作任何修改. 3.采用经典LAMP组合,拓展性强,资源丰富,解决方案较多 4.附带PhpMyadmin和 ...
- 九、IIC驱动原理分析
学习目标:学习IIC驱动原理: 一.IIC总线协议 IIC串行总线包括一条数据线(SDA)和一条时钟线(SCL),支持“一主多从”和“多主机”模式:每个从机设备都有唯一的地址来识别. 图 1 IIC ...
- flask过滤器
过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器. 过滤器的使用方 ...
- go学习笔记-语言指针
语言指针 定义及使用 变量是一种使用方便的占位符,用于引用计算机内存地址.取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址. 一个指针变量指向了一个值的内存地址.类似于变量和常量, ...
- python2.7入门---字典(Dictionary)
这次咱们记录的是python中的字典这个鬼,首先我们得了解,字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 ...
- FIFO的使用场景
(1) 数据的缓冲.如模型图所示,如果数据的写入速率高,但间隔大,且会有突发;读出速率小,但相对均匀.则通过设置相应深度的FIFO,可以起到数据暂存的功能,且能够使后续处理流程平滑,避免前级突发时,后 ...
- python基础之反射、面向对象进阶
isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象,如果是返回True 1 class F ...
- MVC中输入的保护验证用:HttpServerUtility.HtmlEncode
安全说明: 上面的代码使用HttpServerUtility.HtmlEncode来保护应用程序的恶意输入 (即 JavaScript).详细信息请参阅如何: 在 Web 应用程序,通过应用 HTML ...
- spring data elasticsearch多索引查询
一次查询多个索引数据 es里可以这样写 GET 索引1,索引2,索引3/_search 也可以这样 给索引创建别名,多个索引可以使用一个别名 POST /_aliases { "action ...
- 理解JAVA常量池
下面是一些String相关的常见问题: String中的final用法和理解final StringBuffer a = new StringBuffer("111");final ...