POJ 2528 Mayor's posters (线段树)
题目链接:http://poj.org/problem?id=2528
题目大意:有一个很上的面板, 往上面贴海报, 问最后最多有多少个海报没有被完全覆盖
解题思路:将贴海报倒着想, 对于每一张海报只需要判断他要贴的位置是否已经全部被之前的海报覆盖就可以了, 如果没有被覆盖那么这个海报最后是没有被完全覆盖的, 如果被覆盖了, 那么最后是被完全覆盖的。标准的线段树题目.
代码如下:
#include<stdio.h>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
const int N = ; pair<int, int>edge[N];
vector<int> vec;
map<int, int> mp; struct SegmentTree
{
int l, r;
bool mk;
bool lazy;
}; SegmentTree tree[N << ]; void build(int l, int r, int k)
{
tree[k].l = l, tree[k].r = r, tree[k].mk = false, tree[k].lazy = false;
if(l== r)
return;
int mid = (l + r) >> ;
build(l, mid, k<<);
build(mid+, r, k<<|);
} bool query(int l, int r, int k)
{
if(tree[k].mk)
return true; if(tree[k].l >= l && tree[k].r <= r)
return tree[k].mk; bool a = true, b = true;
if(tree[k<<].r >= l)
a = query(l, r, k<<);
if(tree[k<<|].l <= r)
b = query(l, r, k<<|);
return (a && b);
} void updata(int l, int r, int k)
{
if(tree[k].l >= l && tree[k].r <= r)
{
tree[k].mk = true;
tree[k].lazy = true;
return;
} if(tree[k].lazy)
{
tree[k<<].lazy = tree[k<<|].lazy = true;
tree[k].lazy = false;
tree[k<<].mk = tree[k<<|].mk = true;
}
if(tree[k<<].r >= l)
updata(l, r, k<<);
if(tree[k<<|].l <= r)
updata(l, r, k<<|); tree[k].mk = (tree[k<<].mk && tree[k<<|].mk);
} void solve()
{
int n;
scanf("%d", &n);
vec.clear();
for(int i=; i<n; ++ i)
{
scanf("%d%d", &edge[i].first, &edge[i].second);
vec.push_back(edge[i].first);
vec.push_back(edge[i].second);
} sort(vec.begin(), vec.end());
vec.erase(unique(vec.begin(), vec.end()), vec.end()); mp.clear();
int s = ;
for(int i=; i<vec.size(); ++ i)
{
mp[vec[i]] = s;
if(i != vec.size() - )
{
if(vec[i+] == vec[i] + )
s ++;
else
s += ;
}
} build(, s, ); int ans = ;
for(int i=n-; i>=; -- i)
{
int l = mp[edge[i].first], r = mp[edge[i].second];
if(query(l, r, ) == false)
{
ans ++;
updata(l, r, );
}
}
printf("%d\n", ans);
} int main()
{
int t;
scanf("%d", &t);
while(t --)
solve();
return ;
}
POJ 2528 Mayor's posters (线段树)的更多相关文章
- POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化)
POJ.2528 Mayor's posters (线段树 区间更新 区间查询 离散化) 题意分析 贴海报,新的海报能覆盖在旧的海报上面,最后贴完了,求问能看见几张海报. 最多有10000张海报,海报 ...
- poj 2528 Mayor's posters 线段树+离散化技巧
poj 2528 Mayor's posters 题目链接: http://poj.org/problem?id=2528 思路: 线段树+离散化技巧(这里的离散化需要注意一下啊,题目数据弱看不出来) ...
- poj 2528 Mayor's posters 线段树区间更新
Mayor's posters Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=2528 Descript ...
- POJ 2528 Mayor's posters(线段树+离散化)
Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...
- poj 2528 Mayor's posters 线段树+离散化 || hihocode #1079 离散化
Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the ...
- poj 2528 Mayor's posters(线段树)
题目:http://poj.org/problem?id=2528 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度.现在往墙上贴N张海报,每张海报的宽度是任意的, 但是必定是单位宽度的整数 ...
- POJ 2528 Mayor's posters (线段树区间更新+离散化)
题目链接:http://poj.org/problem?id=2528 给你n块木板,每块木板有起始和终点,按顺序放置,问最终能看到几块木板. 很明显的线段树区间更新问题,每次放置木板就更新区间里的值 ...
- POJ 2528 Mayor's posters (线段树+离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions:75394 Accepted: 21747 ...
- POJ 2528 Mayor’s posters (线段树段替换 && 离散化)
题意 : 在墙上贴海报, n(n<=10000)个人依次贴海报,给出每张海报所贴的范围li,ri(1<=li<=ri<=10000000).求出最后还能看见多少张海报. 分析 ...
随机推荐
- 一个简单的TabItem样式。
分享一个以前项目中用到的简单的TabItem样式. 效果图如下: <SolidColorBrush x:Key="TabItemDisabledBackground" Col ...
- git&sourcetree安装及在IntelliIJ下拉取项目基础使用
be careful: 1)git版本与Sourcetree版本最好一致 ,不能git为2.5,sourcetree为1.8 2)先安装git再安装Sourcetree 3)拥有git和sourcet ...
- PostgreSQL笔记
本文针对目前最新版9.5.1,若非说明,文中所说文档即指官方文档.本人刚接触PostgreSQL不久,文中不免错漏,请大家指正:随着了解深入,本文[可能]会不定期更新补足. JSON PostgreS ...
- 常用linux维护命令
cat /etc/issue 查看linux版本信息
- 在xilinxFPGA上使用microblaze及自写GPIO中断
很久很久没有更新过博客了,今天来扒一扒FPGA上CPU软核的使用. 主要完成的功能:使用的开发板是nexys 4 DDR,板上有16个switch以及16个LED,需要完成microblaze对led ...
- Vue2父子组件通信探究
父组件: <template> <div id="secondcomponent"> <input type="" v-model ...
- Ubuntu更改鼠标灵敏度
需要命令:xinput 清自行用 man xinput 查询 xinput 帮助文档 1.插入鼠标,打开终端,输入命令:xinput 查询当前已挂在设备 2.拔出鼠标,打开终端,再输入命令:xinpu ...
- 20个编写现代CSS代码的建议
明白何谓Margin Collapse 不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin相邻时,只有二者中的较 ...
- [PHP]使用PHPMailer发送带附件并支持HTML内容的邮件
来源:http://www.helloweba.com/view-blog-205.html PHPMailer是一个封装好的PHP邮件发送类,支持发送HTML内容的电子邮件,以及可以添加附件发送,并 ...
- Frame URl
http://www.zi-han.net/theme/hplus/?v=4.1 http://webapplayers.com/inspinia_admin-v2.5/ http://baijuny ...