题目链接: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 (线段树)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. pycharm激活码,拿走不谢

    激活码 新下载pycharm编辑器以后,会遇到一个激活的问题,否则只能试用30天 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVO ...

  2. 删除项目中的.svn信息

    有时候我们新开发一个项目时,会将以前的项目从svn上down下来,然后复制一份.这样就会有个问题,项目中的svn信息就会一直存在.下面介绍删除方法: 1.新建一个.txt的文档.然后将下面代码粘贴到文 ...

  3. CSS 宝典

    input点击时候,有个灰块 outline:medium; -webkit-tap-highlight-color:rgba(0,0,0,0); -webkit-user-modify:read-w ...

  4. STL学习 - map

    C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明    1   头文件 #include <map> 2  ...

  5. 转:10年程序员谈.Net程序员的职业规划

    从事Dotnet程序开发工作近10年了,从开始的月薪3k的小程序员菜鸟,到现在年薪60w的项目总经理,从战战兢兢的去各个公司应聘,到现在开始面试那些战战兢兢的小程序员,回想起这近十年来的经验,看着还是 ...

  6. 关于Java static 的学习心得

    static,大家都很熟悉.但是要说真的懂,那就很少了.(当然我也不是很懂,但不妨碍学习吗.) 首先,我认为static修饰的成员就是属于类本身的成员.如果你加了一个static修饰符,好吧,那就相当 ...

  7. 几种方法实现ajax请求内容时使用浏览器后退和前进功能

    ajax是一个非常好玩的小东西,不过用起来也会存在一些问题. 我们可以利用ajax进行无刷新改变文档内容,但是没办法去修改URL,即无法实现浏览器的前进与后退.书签的收藏功能. 利用location的 ...

  8. Salt 安装方式(CentOS)

    安装前必备环境:2.6.6<Pythin<3.x 本文内容是参考 中国SaltStack用户组 里面 Salt中文手册 中的安装内容实践之后总结的. 初学者可用Ubuntu系统学习安装,因 ...

  9. java ppt课后作业

    1 .仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象.可以使用“==”和e ...

  10. Kafka安装

    一.下载kafka: http://kafka.apache.org/downloads 二.解压 tar -zxvf kafka_2.10-0.10.0.1.tgz 三.kafka需要用到zooke ...