Mayor's posters POJ - 2528 线段树区间覆盖
//线段树区间覆盖
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=;
int flag;
struct node{
int l,r;
//vis 是这块区域是否完全被覆盖
bool vis;
}tr[N<<];
struct point
{
int id;
int x;
}post[N<<];
int cmp1(point a,point b)
{
return a.x<b.x;
}
int cmp2(point a,point b)
{
if(a.id==b.id)
return a.x<b.x;
return a.id>b.id;
}
void pushup(int u)
{
tr[u].vis=tr[u<<].vis&&tr[u<<|].vis;
}
void build(int u,int l,int r)
{
tr[u]={l,r,};
if(l==r)
return ;
int mid=l+r>>;
build(u<<,l,mid);
build(u<<|,mid+,r);
}
void query(int u,int l,int r)
{
if(tr[u].vis)
return ;
if(tr[u].l==l&&tr[u].r==r)
{
tr[u].vis=;
flag=;
return;
}
int mid=tr[u].l+tr[u].r>>;
if(r<=mid)
query(u<<,l,r);
else if(l>mid)
query(u<<|,l,r);
else
{
query(u<<,l,mid);
query(u<<|,mid+,r);
}
pushup(u);
}
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
//离散化之前的数据
for(int i=;i<*n;i+=)
{
cin>>post[i].x>>post[i+].x;
post[i].id=post[i+].id=i;
}
//按照离散化之前的数据排序
sort(post,post+*n,cmp1);
//离散化
int tot=,pre=;
for(int i=;i<*n;i++)
{
//如果和上一个一样
//那么排名也就一样
if(post[i].x==pre)
{
post[i].x=tot;
}
//如果不一样,记录当前值
//排名++
else
{
pre=post[i].x;
post[i].x=++tot;
}
}
build(,,*n);
//排序,从后往前贴
//id大的在前
sort(post,post+*n,cmp2);
int ans=;
for(int i=;i<*n;i+=)
{
int l=post[i].x;
int r=post[i+].x;
flag=;
query(,l,r);
if(flag)
ans++;
}
cout<<ans<<endl;
}
return ;
}
Mayor's posters POJ - 2528 线段树区间覆盖的更多相关文章
- Mayor's posters POJ - 2528(线段树 + 离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 74745 Accepted: 21574 ...
- Mayor's posters POJ - 2528 线段树(离散化处理大数?)
题意:输入t组数据,输入n代表有n块广告牌,按照顺序贴上去,输入左边和右边到达的地方,问贴完以后还有多少块广告牌可以看到(因为有的被完全覆盖了). 思路:很明显就是线段树更改区间,不过这个区间的跨度有 ...
- poj 2528 线段树区间修改+离散化
Mayor's posters POJ 2528 传送门 线段树区间修改加离散化 #include <cstdio> #include <iostream> #include ...
- POJ 2528 Mayor's posters 贴海报 线段树 区间更新
注意离散化!!!线段树的叶子结点代表的是一段!!! 给出下面两个简单的例子应该能体现普通离散化的缺陷: 1-10 1-4 5-10 1-10 1-4 6-10 普通离散化算出来的结果都会是2,但是第二 ...
- POJ - 2528Mayor's posters (离散化+线段树区间覆盖)
The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...
- POJ - 2528 Mayor's posters (离散化+线段树区间修改)
https://cn.vjudge.net/problem/POJ-2528 题意 给定一些海报,可能相互重叠,告诉你每个海报的宽度(高度都一样的)和先后叠放顺序,问没有被完全盖住的有多少张? 分析 ...
- HDU 4509 湫湫系列故事——减肥记II(线段树-区间覆盖 或者 暴力技巧)
http://acm.hdu.edu.cn/showproblem.php?pid=4509 题目大意: 中文意义,应该能懂. 解题思路: 因为题目给的时间是一天24小时,而且还有分钟.为了解题方便, ...
- [NOI2015] 软件包管理器【树链剖分+线段树区间覆盖】
Online Judge:Luogu-P2146 Label:树链剖分,线段树区间覆盖 题目大意 \(n\)个软件包(编号0~n-1),他们之间的依赖关系用一棵含\(n-1\)条边的树来描述.一共两种 ...
- HDU 5023 A Corrupt Mayor's Performance Art(线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5023 解题报告:一面墙长度为n,有N个单元,每个单元编号从1到n,墙的初始的颜色是2,一共有30种颜色 ...
随机推荐
- Python报错:PermissionError: [Errno 13] Permission denied
问题分析: 错误产生的原因是文件无法打开,可能产生的原因是文件找不到,或者被占用,或者无权限访问,或者打开的不是文件,而是一个目录. 问题解决: 1.检查对应路径下的文件是否存在,且被占用.如果文件不 ...
- 关于java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)
public byte[] getBytes(Charset charset) Encodes this String into a sequence of bytes using the given ...
- linux下的 $ ./configure $ sudo make && sudo make install
$ ./configure $ sudo make && sudo make install 1)./configure命令就是执行当前目录的名为configure的脚本,主要的作用是 ...
- WARNING OGG-00706 Failed to add supplemental log group on table
在配置OGG时,需要给同步的表添加补充日志,在ggsci命令行执行 add trandata user.table SQL> desc jack.t1 Name Null? Type --- ...
- Go语言实现:【剑指offer】数组中的逆序对
该题目来源于牛客网<剑指offer>专题. 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对10000 ...
- spring cloud微服务快速教程之(七) Spring Cloud Alibaba--nacos(一)、服务注册发现
0.前言 什么是Spring Cloud Alibaba? Spring Cloud Alibaba 是阿里开源的,致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便 ...
- php面试笔记(3)-php基础知识-运算符
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 在面试中,考官往往喜欢基础扎实的面试者,而运算符相关的考 ...
- 虚拟机ubuntu的网络连接类型
图很好 https://jingyan.baidu.com/article/91f5db1b17e8a01c7f05e3e6.html 很详细,有实例 https://www.cnblogs.com/ ...
- 制作openstack的windows server 2012r2镜像
1. 基础环境安装 yum groupinstall Virtualization "Virtualization Client" yum install libvirt 2. 启 ...
- [Python]List 过滤
获取数据库列表屏蔽系统自带数据库 # 原代码 db_list_result = [('master', ), ('tempdb', ), ('model', ), ('msdb', ), ('stud ...