P3740 贴海报
很显然,这个题是让我们维护一个区间的信息
可以考虑线段树。可是这个题,正向思维可能并不可做。
所以我们考虑逆向思维。
打个比方,你是一名保洁人员。面对已经粘在墙上的,大大小小的广告。你想要将他们撕下来。
而且你是一个有点强迫症的的人(溜
你总是每天快要下班时打扫,而且他们贴小广告的顺序你也都知道。而且特别强迫症地必须按照顺序,一张一张地撕下来。
有可能你撕小广告的时候,一张小广告已经被撕成好多条,但你还是要必须将这几条一起撕下来。
为了消遣,你想知道你一共撕下来多少张小广告(重叠的算一张)
就像这样:
你将最后贴的一张撕下来,变成了这样:
,这就算一次
然后需要离散化
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int manx=1100;
int val[manx<<2],tag[manx<<2];
int data[manx<<1],tail;
int base[manx<<1],k;
struct node
{
int l,r;
};
node line[manx];
void make_base()
{
int now=-0x7fffffff;
for(int i=1;i<=tail;i++)
if(now!=data[i])
{
now=data[i];
base[++k]=now;
}
return ;
}
int find(int val)
{
int l=1,r=k;
int mid;
while(l<r)
{
mid=(l+r)>>1;
if(base[mid]<val) l=mid+1;
else r=mid;
}
return l;
}
void build(int root,int l,int r)
{
val[root]=base[r+1]-base[l];
tag[root]=0;
if(l==r) return ;
int mid=(l+r)>>1;
build(root<<1,l,mid);
build(root<<1|1,mid+1,r);
}
void push_down(int root)
{
if(tag[root])
{
val[root<<1]=0;val[root<<1|1]=0;
tag[root<<1]=1;tag[root<<1|1]=1;
tag[root]=0;
}
return ;
}
void push_up(int root)
{
val[root]=val[root<<1]+val[root<<1|1];
return ;
}
int check(int root,int l,int r,int al,int ar)
{
if(l>ar||r<al) return 0;
if(l>=al&&r<=ar) return val[root];
int mid=(l+r)>>1;
push_down(root);
return check(root<<1,l,mid,al,ar)+
check(root<<1|1,mid+1,r,al,ar);
}
void updata(int root,int l,int r,int al,int ar)
{
if(l>ar||r<al) return ;
if(l>=al&&r<=ar)
{
val[root]=0;
tag[root]=1;
return ;
}
int mid=(l+r)>>1;
push_down(root);
updata(root<<1,l,mid,al,ar);
updata(root<<1|1,mid+1,r,al,ar);
push_up(root);
return ;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a,b;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
data[++tail]=a;
data[++tail]=b+1;
line[i].l=a;line[i].r=b+1;
}
sort(data+1,data+1+tail);
make_base();
build(1,1,k-1);
int ans=0;
for(int i=m;i>=1;i--)
{
int pos1=find(line[i].l),pos2=find(line[i].r);
if(check(1,1,k-1,pos1,pos2-1)) ans+=1;
updata(1,1,k-1,pos1,pos2-1);
}
printf("%d",ans);
}
P3740 贴海报的更多相关文章
- noip2017考前整理(未完)
快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...
- 【题解】Luogu P3740 [HAOI2014]贴海报
woc,今天已经是day -1了 再写一颗珂朵莉树来++rp吧 否则就要AFO了qaq 这有可能是我最后一篇题解/博客qaq 原题传送门:P3740 [HAOI2014]贴海报 考前刷水题到底是对还是 ...
- Luogu P3740 [HAOI2014]贴海报_线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- 洛谷P3740 【[HAOI2014]贴海报】
(呃...本蒟蒻的第一篇题解qwq)..不废话了讲正题..思路来源于铺地毯(-->传送门)..先算出每一个格子上覆盖的海报并把可见的海报做标记然后算出有多少海报是可见的..但是作为省选题怎么可能 ...
- 洛谷P3740 [HAOI2014]贴海报
题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...
- 【线段树】【P3740】 [HAOI2014]贴海报
传送门 Description Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规 ...
- 洛谷 P3740 [HAOI2014]贴海报
题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...
- Luogu P3740 [HAOI2014] 贴海报 线段树
线段树版的海报 实际上这个与普通的线段树相差不大,只是貌似数据太水,暴力都可以过啊 本来以为要离散的,结果没打就A了 #include<iostream> #include<cstd ...
- P3740 [HAOI2014]贴海报
题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...
随机推荐
- 安装Hexo遇到npm的问题
目录:1.安装git.nvm.node.js 2.安装Hexo遇到npm的问题-及解决办法 3.初步安装完成Hexo ============================ 安装git.nvm.no ...
- http 中的缓存
如何判断缓存新鲜度 If-Modified-Since告诉服务器, 在服务器中的响应报文中有一个Last-Modified字段, 如果两者一直则表示在浏览器中缓存的文件是最新的, 可以直接使用浏览器缓 ...
- 如何结合后台数据库 启动vue项目
一:连接数据库 1. 点击打开后输入密码 2.查看数据库 show databases; 3.创建数据库 create database jd; 删除数据库 drop database jd; 4.使 ...
- CentOS7中添加新硬盘
cp /etc/fstab /etc/fstab.bak echo /dev/vdb1 /mnt/disk1 ext4 defaults 0 0 >> /etc/fstab mkdir ...
- Java中的阻塞队列-LinkedBlockingQueue(二)
原文地址:http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8 ...
- Hive总结
一.什么是Hive 1.Hive 由 Facebook 实现并开源 2.是基于 Hadoop 的一个数据仓库 3.可以将结构化的数据映射为一张数据库表 4.并提供 HQL(Hive SQL)查询功能 ...
- Hibernate课程 初探一对多映射5-2 Eclipse添加数据库连接
1 Eclipse新建java项目 2 Windows ==> show view == >other ==>Data source Explorer 3 左侧视图 database ...
- 粗看ES6之字符串
标签: javascript es6 字符串新增特性 新增二个方法 - startsWith/endsWith 字符串模板 - 反单引号的应用 startsWith 判断字符串以是否以某某开头,返回一 ...
- 什么叫erp系统
一般来说,erp系统是一个以会计(此处的会计是指管理会计)为核心的信息系统,用来识别和规划企业资源, 从而获取客户订单, 完成加工和交付,最后得到客户付款,最终获得收入和利润. 实际上, erp 系统 ...
- textarea存起来的数据把空格也存起来
textarea的属性wrap="hard"可以把换行的内容也存起来. <html> <head> <title>这是一个小测试</tit ...