5029: 贴小广告

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 161  Solved: 101
[Submit][Status][Discuss]

Description

现在有一堵墙,墙上分为若干个单元。接下来会来n个人在墙上贴小广告。每次每个人选择墙上连续一段的单元贴上自己公司与众不同的小广告。因为小广告可能会出现被覆盖的情况,由于公司之间存在竞争,后贴广告的人想让别人看不见前面公司的广告,所以会将前面的广告完全覆盖。因此对于墙上的某个单元上贴的小广告中只有贴的最晚的能被看见。现在想要知道n个人依次贴完后,墙上共能看到多少种小广告?

Input

输入文件第一行有一个整数 n。
接下来 n 行每行 2 个整数 li、ri,表示这个人在第li个单元到第ri个单元贴了小广告。
1 <= n,m <= 10^5 , 1<=li<=ri<=10^7

Output

输出所有人贴完后墙上能看到多少种小广告?

Sample Input

5
1 4
2 6
8 10
3 4
7 10

Sample Output

4

倒过来处理,用线段树维护当前区间是否有小广告

离散化的时候注意坑!

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct
{int x;int y;
}Line;
Line s[210005];
int n, flag, ans, tre[544444], dtt[203333] = {-1};
void Create(int l, int r, int x);
void Update(int l, int r, int x, int a, int b);
int Bsech(int l, int r, int t);
int main(void)
{int T, i, m, k, ans, a, b;ans = n = 0;scanf("%d", &m);for(i=1;i<=m;i++){scanf("%d%d", &s[i].x, &s[i].y);dtt[++n] = s[i].x, dtt[++n] = s[i].y;}sort(dtt+1, dtt+n+1);k = 0;for(i=1;i<=n;i++){if(dtt[i]!=dtt[i-1])dtt[++k] = dtt[i];}n = k;for(i=1;i<=n;i++){if(dtt[i]+1!=dtt[i+1])dtt[++k] = dtt[i]+1;}n = k;sort(dtt+1, dtt+n+1);Create(1, n, 1);for(i=m;i>=1;i--){a = Bsech(1, n, s[i].x);b = Bsech(1, n, s[i].y);flag = 0;Update(1, n, 1, a, b);if(flag==1)ans++;}printf("%d\n", ans);return 0;
}int Bsech(int l, int r, int t)
{int m;m = (l+r)/2;if(t==dtt[m])return m;if(t<dtt[m])return Bsech(l, m-1, t);return Bsech(m+1, r, t);
}void Create(int l, int r, int x)
{int m;if(l==r){tre[x] = 1;return;}m = (l+r)/2;Create(l, m, x*2);Create(m+1, r, x*2+1);tre[x] = tre[x*2]+tre[x*2+1];
}void Update(int l, int r, int x, int a, int b)
{int m;if(l>=a && r<=b && tre[x]==0)return;if(l==r && l>=a && l<=b){tre[x] = 0;flag = 1;return;}m = (l+r)/2;if(a<=m)Update(l, m, x*2, a, b);if(b>=m+1)Update(m+1, r, x*2+1, a, b);tre[x] = tre[x*2]+tre[x*2+1];
}

bzoj 5029 poj 2528 nyoj 1009: 贴小广告(线段树)相关推荐

  1. POJ 2528 Mayor's posters (离散化和线段树使用)

    还是做了线段树的题目,玩了两天也要继续看看题目了.之前就有看离散化的概念,大家可以去百度百科一下,简单转载一个例子 离散化 的大概思路 : 比如说给你一组 数据 1 4 1000 100000, 如果 ...

  2. POJ 2528 Mayor's posters 贴海报 线段树 区间更新

    注意离散化!!!线段树的叶子结点代表的是一段!!! 给出下面两个简单的例子应该能体现普通离散化的缺陷: 1-10 1-4 5-10 1-10 1-4 6-10 普通离散化算出来的结果都会是2,但是第二 ...

  3. 花神游历各国 题解(小清新线段树/树状数组+并查集)

    题面 众所周知,这是一道小清新线段树 然而可以用树状数组水过去且跑得飞快 看到区间开方第一反应肯定是线段树懒标记区间修改之类的,但是这个东西似乎确凿不可维护 所以考虑暴力循环单点修改->T飞 于 ...

  4. BZOJ.5249.[九省联考2018]iiidx(贪心 线段树)

    BZOJ LOJ 洛谷 \(d_i\)不同就不用说了,建出树来\(DFS\)一遍. 对于\(d_i\)不同的情况: Solution 1: xxy tql! 考虑如何把这些数依次填到树里. 首先对于已 ...

  5. poj 2482 Stars in Your Window(线段树+离散化+线扫描)

    题目:http://poj.org/problem?id=2482 大意:在一个坐标系中给你n(10^4)个点(点的坐标范围为0<=x,y<2^31),每个点有一个权值,然后给你一个长宽分 ...

  6. POJ 1151 Atlantis 矩形面积求交/线段树扫描线

    Atlantis 题目连接 http://poj.org/problem?id=1151 Description here are several ancient Greek texts that c ...

  7. poj 3468 A Simple Problem with Integers(线段树区区)

    题目链接:  http://poj.org/problem?id=3468 题目大意:  给出N个数,和M次查询 C a b c  区间[a,b]的值都加上c Q a b     查询区间[a,b]值 ...

  8. bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】

    bzoj题面什么鬼啊-- 题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和 离散化,然后建立线段树,每次修改在区间上打max标记即 ...

  9. poj 2886 Who Gets the Most Candies?(线段树)

    题目链接:poj 2886 Who Gets the Most Candies? 题目大意:N个人围成一圈玩约瑟夫环游戏,不同的是.步长不固定,由前一个出局的人决定.给定K表示起始的人. 第i个淘汰的 ...

最新文章

  1. Could not load file or assembly App_Licenses.dll的问题
  2. html div 可鼠标滚动,js实现鼠标拖拽div左右滑动
  3. Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
  4. ROS系统实现 tf坐标系广播与监听
  5. Doxygen基本用法
  6. Linux脚本:xjps查看各个节点java进程
  7. Codeforces Round #646 (Div. 2) E(贪心,bfs)
  8. buck电路上下管_推荐 | 学好电路设计与仿真?你不能错过这两本书籍 ~
  9. s7300plc串口通信_西门子S7-300/400串口通信模块的信息与使用
  10. HDU2159 研发费用背包
  11. 2021年中国蛋鸡养殖设备市场趋势报告、技术动态创新及2027年市场预测
  12. 802.11 monitor模式
  13. Unity学习笔记(一)—— 基础知识
  14. PASCAL VOC 2012
  15. CodeBlock 基本使用
  16. 在计算机知识post的含义,计算机术语POST是指的什么意思?
  17. CentOS 7 搭建DHCP中继服务
  18. 思维导图:从Xmind到docsify博客
  19. 配置IKAnalyzer扩展词库
  20. 前缀、中缀、后缀表达式

热门文章

  1. python能做什么工作-python语言能做什么工作
  2. python自学看什么书-python自学看什么书
  3. python培训班-Python培训机构有哪些值得推荐?
  4. 这4点教你找到小程序专业开发公司
  5. java后端面试经验(自用收藏)
  6. python接口自动化参数化_python接口自动化-参数化
  7. Vue双向数据绑定 ~ 非常详细哦
  8. Node介绍及环境配置~超级详细哦
  9. 算法-递归求1-n的阶乘
  10. mock server java_MockServer 简单示例