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

正解:线段树。

线段树区间覆盖傻逼题。

$upd$:其实这个做法是错的,不过懒得改了。。

 #include <bits/stdc++.h>
#define il inline
#define RG register
#define ll long long
#define N (100010)
#define ls (x<<1)
#define rs (x<<1|1) using namespace std; struct data{ int l,r; }q[N]; int sum[N<<],hsh[N<<],a[N<<],vis[N<<],n,tot,ans; il int gi(){
RG int x=,q=; RG char ch=getchar();
while ((ch<'' || ch>'') && ch!='-') ch=getchar();
if (ch=='-') q=-,ch=getchar();
while (ch>='' && ch<='') x=x*+ch-,ch=getchar();
return q*x;
} il void pushdown(RG int x){ sum[ls]=sum[rs]=sum[x],sum[x]=; return; } il void update(RG int x,RG int l,RG int r,RG int xl,RG int xr,RG int v){
if (xl<=l && r<=xr){ sum[x]=v; return; }
if (sum[x]) pushdown(x); RG int mid=(l+r)>>;
if (xr<=mid) update(ls,l,mid,xl,xr,v);
else if (xl>mid) update(rs,mid+,r,xl,xr,v);
else update(ls,l,mid,xl,mid,v),update(rs,mid+,r,mid+,xr,v);
} il void query(RG int x,RG int l,RG int r){
if (l==r){ a[l]=sum[x]; return; }
if (sum[x]) pushdown(x); RG int mid=(l+r)>>;
query(ls,l,mid),query(rs,mid+,r); return;
} int main(){
#ifndef ONLINE_JUDGE
freopen("advertising.in","r",stdin);
freopen("advertising.out","w",stdout);
#endif
n=gi();
for (RG int i=;i<=n;++i) q[i].l=gi(),q[i].r=gi(),hsh[++tot]=q[i].l,hsh[++tot]=q[i].r;
sort(hsh+,hsh+tot+),tot=unique(hsh+,hsh+tot+)-hsh-;
for (RG int i=;i<=n;++i){
q[i].l=lower_bound(hsh+,hsh+tot+,q[i].l)-hsh;
q[i].r=lower_bound(hsh+,hsh+tot+,q[i].r)-hsh;
update(,,tot,q[i].l,q[i].r,i);
}
query(,,tot); for (RG int i=;i<=tot;++i) ans+=!vis[a[i]],vis[a[i]]=;
printf("%d\n",ans); return ;
}

bzoj5029 贴小广告的更多相关文章

  1. BZOJ5029: 贴小广告 & BZOJ5168: [HAOI2014]贴海报

    [传送门:BZOJ5029&BZOJ5168] 简要题意: 给出m段区间l[i],r[i],表示l[i]到r[i]的数全部变成i,求出最后有多少种不同的数 题解: 线段树+离散化 这是一道经典 ...

  2. bzoj5029: 贴小广告&&bzoj5168: [HAOI2014]贴海报

    以后做双精题请至少先跑个数据...输入都不一样... 做法就是离散化大力线段树. 记得在x+1和y-1插点 看这个数据: 1000 121 10050 8080 9950 981 56100 2002 ...

  3. 从运营商小广告到HTTPS

    相信很多人都试过这样的经历,浏览一个正常的网站时,右下突然角弹出一堆小广告,而且这些广告的内容和你浏览的网站格格不入: 前几天还有某微博用户爆料访问github时居然也有广告: 又或者,你有没有试过因 ...

  4. PJzhang:关闭wps小广告和快速关闭445端口

    猫宁!!! ​​   kali linux上安装的wps,没有广告,而且轻巧简洁.   如果你在windows上安装wps,除了ppt.word.excel,还会有一个h5的应用,当然,最令人烦扰的当 ...

  5. 淘宝小广告的鼠标移上实现html, JavaScript代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 彻底根治window弹窗小广告(今日热点)

    在一个阴雨蒙蒙的下午,我上完厕所回到工位,输入锁屏密码,解锁,蹦出来三个小广告,我......这还能忍??? 废话不多说,开搞! 一.广告分为两种: 红色字的今日热点 蓝色字的今日热点 二.追溯根源: ...

  7. JQuery案例:暖心小广告

    暖心小广告 写一个页面,每隔3秒显示小广告,再过3秒自动关闭. <head> <meta charset="UTF-8"> <title>暖心广 ...

  8. 用jQuery动态添加小广告

    网站的时候,有些网站总是在右下角,左上角或者其他地方投放广告. 我用jQuery试着自己做了一个,代码如下,如有不对的地方请各位不吝赐教 <!DOCTYPE html> <html ...

  9. jquery动态创建小广告

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

随机推荐

  1. display inline-block 间隔

    1.如果li横排用display:inline-block; 则li之间不能有间隔 必须连着一起,所以才一般用float:left; .today-wrap{ position: relative; ...

  2. JS中String()与.toString()的区别

    1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 例如将false转为字符串类型 <script> var str = false.t ...

  3. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  4. 【ExtJS】自定义组件datetimefield(一)

    目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefiel ...

  5. Tomcat配置自定义访问日志 --- 获取请求头部信息

    使用tomcat,搭建完个人网站后,默认记录来访游客的信息是十分有限的,主要有ip和路径以及方法等. 有时候为了获取更多来访信息,比如请求的头部信息,这个时候就需要我们手动配置log了. 开始 进入T ...

  6. C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密

    要求:密码必须包含数字和字母 思路:1.列出数字和字符. 组成字符串 :chars 2.利用randrom.Next(int i)返回一个小于所指定最大值的非负随机数. 3. 随机取不小于chars长 ...

  7. Oracle服务器重命名

    转载自:http://www.codesec.net/view/120387.html 因工作需要准备了一台服务器专门按照oracle数据库,并且服务器上安装了windows 2008R2操作系统,在 ...

  8. bzoj 3716: [PA2014]Muzeum

    Description 吉丽的漫展有n件手办和m名警卫.建立平面直角坐标系,每个手办和警卫都可以看做一个点.警卫们的目光都朝着y轴负方向,且都有相同大小的视角.警卫可以看见自己视角内(包括边界上的点) ...

  9. JS常用的设计模式(4)——适配器模式

    去年年前当时正在开发dev.qplus.com, 有个存储应用分类id的js文件, 分类id的结构最开始设计的比较笨重. 于是我决定重构它. 我把它定义成一个json树的形式, 大概是这样: var ...

  10. 安装lombok(eclipse)

    下载 lombok.jar (https://projectlombok.org/download.html) 将 lombok.jar 放在eclipse安装目录下,和 eclipse.ini 文件 ...