题目

给定每张海报的覆盖区间,按顺序覆盖后,最后有几张海报没有被其他海报完全覆盖。
离散化处理完区间端点,排序后再给相差大于1的相邻端点之间再加一个点,再排序。
线段树,tree[i]表示节点i对应区间是哪张海报,如果是-1代表对应区间不是一张海报(0或多张)。
每贴一张海报,就用二分查找出覆盖的起点和终点对应的离散后的下标,然后更新区间。
线段树的区间更新可以加上懒惰标记(或延迟标记,但是这题可以不用另外标记。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 10005
using namespace std;
int m,li[N],ri[N];
int x[N<<],tree[N<<],ans;
bool hash[N];
void PushDown(int node){
tree[node<<]=tree[node<<|]=tree[node];
tree[node]=-;
}
void Update(int v,int l,int r,int node,int L,int R){
if(L>r||R<l)return;
if(L<=l&&r<=R){
tree[node]=v;
return;
} if(tree[node]!=-) PushDown(node);
int m=l+r>>;
Update(v,l,m,node<<,L,R);
Update(v,m+,r,node<<|,L,R);
}
void query(int l,int r,int node){
if(l==r){
if(tree[node]!=-&&!hash[tree[node]]){
ans++;
hash[tree[node]]=;
}
return;
}
if(tree[node]!=-)PushDown(node);
int m=l+r>>;
query(l,m,node<<);
query(m+,r,node<<|);
}
int main(){
freopen("in.txt","r",stdin);
int t,n,i;
scanf("%d",&t);
while(t--){
memset(tree,-,sizeof tree);
memset(hash,,sizeof hash);
int k=;
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%d%d",&li[i],&ri[i]);
x[++k]=li[i];
x[++k]=ri[i];
}
sort(x+,x+k+);
m=;
for(i=;i<=k;i++){
if(x[i]!=x[i-])x[++m]=x[i];
}
for(i=m;i>;i--){
if(x[i]-x[i-]>)x[++m]=x[i]-;
}
sort(x+,x+m+);
for(i=;i<=n;i++){
int l=lower_bound(x+,x+m,li[i])-x;
int r=lower_bound(x+,x+m,ri[i])-x;
Update(i,,m,,l,r);
}
ans=;
query(,m,);
printf("%d\n",ans);
}
}

  

【POJ 2528】Mayor’s posters(线段树+离散化)的更多相关文章

  1. poj 2528 Mayor's posters 线段树+离散化技巧

    poj 2528 Mayor's posters 题目链接: http://poj.org/problem?id=2528 思路: 线段树+离散化技巧(这里的离散化需要注意一下啊,题目数据弱看不出来) ...

  2. POJ 2528 Mayor's posters(线段树+离散化)

    Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...

  3. poj 2528 Mayor's posters 线段树+离散化 || hihocode #1079 离散化

    Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the ...

  4. POJ 2528 Mayor's posters (线段树+离散化)

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:75394   Accepted: 21747 ...

  5. POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)

    POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化) 题意分析 贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报. 最多有10000张海报,海报 ...

  6. POJ 2528 Mayor's posters (线段树区间更新+离散化)

    题目链接:http://poj.org/problem?id=2528 给你n块木板,每块木板有起始和终点,按顺序放置,问最终能看到几块木板. 很明显的线段树区间更新问题,每次放置木板就更新区间里的值 ...

  7. POJ 2528 Mayor’s posters (线段树段替换 && 离散化)

    题意 : 在墙上贴海报, n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000).求出最后还能看见多少张海报. 分析 ...

  8. poj 2528 Mayor's posters 线段树区间更新

    Mayor's posters Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=2528 Descript ...

  9. poj 2528 Mayor's posters(线段树)

    题目:http://poj.org/problem?id=2528 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度.现在往墙上贴N张海报,每张海报的宽度是任意的, 但是必定是单位宽度的整数 ...

  10. POJ 2528 Mayor's posters (线段树)

    题目链接:http://poj.org/problem?id=2528 题目大意:有一个很上的面板, 往上面贴海报, 问最后最多有多少个海报没有被完全覆盖 解题思路:将贴海报倒着想, 对于每一张海报只 ...

随机推荐

  1. [No000029]程序员的那些事儿 -- 皆大欢喜的加薪

    我的朋友A君是个典型的.NET开发人员,技术不错,人品也不错,在一家小公司(姑且称为甲公司)做项目开发,是技术骨干. 3个月前,他找到我说想跳槽,让我帮忙介绍工作.我说为什么想跳了? 1. 为什么想离 ...

  2. 关于Xcode7.2版本访问相册问题

    前些天自己将xcode升级到7.2版本后,在我写的代码中有需要访问到相册的功能,但是却发现被告知无权限 一开始以为是手机问题,在设置里面找也没有找到,然后看代码,但是代码也没问题,后来才发现是我的pl ...

  3. Openjudge 1.13-40 提取数字串按数值排序

    40:提取数字串按数值排序 查看 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从 ...

  4. Codevs 1230 STL万岁。。 。

    题目描述 Description 给出n个正整数,然后有m个询问,每个询问一个整数,询问该整数是否在n个正整数中出现过. 输入描述 Input Description 第一行两个整数 n 和m. 第二 ...

  5. OmniPlan文档链接

    https://support.omnigroup.com/documentation/omniplan/mac/3.0/zh/introduction/#introduction

  6. usb驱动开发21之驱动生命线

    现在开始就沿着usb_generic_driver的生命线继续往下走.设备的生命线你可以为是从你的usb设备连接到hub的某个端口时开始,而驱动的生命线就必须得回溯到usb子系统的初始化函数usb_i ...

  7. [转]Linux后台进程管理利器:supervisor

    FROM : http://www.liaoxuefeng.com/article/0013738926914703df5e93589a14c19807f0e285194fe84000 Linux后台 ...

  8. 放松跑、间歇跑、节奏跑和LSD

    放松跑(easy run),顾名思义,是没有负担的跑步,通常用于高强度训练之间,让机能得到恢复. 间歇跑(intervals),又叫变速跑,通常是用高于实际比赛速配速的速度进行反复短距离的快跑,当中配 ...

  9. 建立时间和保持时间(setup time 和 hold time)

    建立时间和保持时间贯穿了整个时序分析过程.只要涉及到同步时序电路,那么必然有上升沿.下降沿采样,那么无法避免setup-time 和 hold-time这两个概念.本文内容相对独立于该系列其他文章,是 ...

  10. 代码重构之 —— 一堆if、esle 逻辑的处理

    这几天,接手一个同事的代码,关于微信接口开发的,那一堆的 if,看得哥蛋痛了,这个毛病也是很多新手容易犯的,所以特地把这次重构写出来. 下面来我们看看这个代码的问题所在,if else 里面的代码块逻 ...