题目链接: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. R语言将字符串矩阵转化为数值型矩阵

    这是原始数据的格式,当运行完下面的命令的时候,结果如下图 x=read.table("C:/Users/Administrator/Desktop/s1.txt") x=as.ma ...

  2. Node.js 自学之旅

    学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里 ...

  3. js判断是否绑定了事件。

    if ($._data($("#moreDescription")[0], "events")) { return; }

  4. CNC系统实时性分析

    该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:数控系统中控制装置与现场设备通信的实时性要求,数控系统要快速而有效的对复杂而庞大的操作任务进行处理. ...

  5. J2EE应用监控后台执行SQL

    我们可能已经很熟悉在未使用数据库连接池的hibernate的环境下,配置p6spy和sql profiler.这在单独使用hibernate,以及项目初期是有效的.但是,在真实的开发环境下,往往是项目 ...

  6. java泛型编译时被擦除引起多态的破坏,用 桥方法解决此类问题。(java 桥方法)

    在JVM虚拟机中泛型编译的时候,会出现类型擦除.但是,在多态场景中,编译时,擦除方式会出现多态被破坏的可能. 举个栗子: A.java public class A<T> { void g ...

  7. 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  8. 38、重新复习javascript之三

    前言 虽然吧,每天都没有什么太有技术性的工作者,但是技术不能丢,希望也要有,人如果没有希望那不就和咸鱼一样了吗?小伙加油吧 1.html与javascript结合 <!DOCTYPE html ...

  9. GPL 和BSD和Apache

    开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别<ignore_js_op> 以下是上述协议的简单介绍:BSD开源协议BSD开源协议是一个给于使用者很大自由的 ...

  10. C#中获得机器的字符编码webName信息

    在一次解决编码的问题过程中,发现Encoding.GetEncoding("GB2312") == Encoding.GetEncoding("GBK"),到底 ...