题意:输入t组数据,输入n代表有n块广告牌,按照顺序贴上去,输入左边和右边到达的地方,问贴完以后还有多少块广告牌可以看到(因为有的被完全覆盖了)。

思路:很明显就是线段树更改区间,不过这个区间的跨度有点大(看数据),不过n<10000,所以就可以把这些广告牌的边界重新定义编号,比如:

n输入 2

1 6

2 13

排序以后,1还是1,2还是2,6就可以看成3,13就可以看成4

变成:

1 3

2 4

其实性质还是没有变,两个广告牌都可以看到,不过线段树开的数组就不用很大了。

#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int ans,book[20010],index[10000005],sum[400010],lazy[400010],a[10010],b[10010],c[20010];
void pushdown(int l,int r,int o)
{
if(lazy[o])
{
lazy[o<<1]=lazy[o<<1|1]=lazy[o];
sum[o<<1|1]=sum[o<<1]=lazy[o];
lazy[o]=0;
}
}
void update(int l,int r,int o,int x,int y,int c)
{
if(x<=l&&y>=r)
{
sum[o]=c;
lazy[o]=c;
return;
}
pushdown(l,r,o);
int mid=(l+r)/2;
if(x<=mid) update(l,mid,o<<1,x,y,c);
if(y>mid) update(mid+1,r,o<<1|1,x,y,c);
}
void query(int l,int r,int o)
{
if(l==r)
{
if(!book[sum[o]])
{
ans++;
book[sum[o]]=1;
}
return;
}
pushdown(l,r,o);
int mid=(l+r)/2;
query(l,mid,o<<1);
query(mid+1,r,o<<1|1);
}
int main()
{
int t,n,x,y;
scanf("%d",&t);
while(t--)
{
memset(book,0,sizeof(book));
memset(sum,0,sizeof(sum));
memset(lazy,0,sizeof(lazy));
scanf("%d",&n);
int w=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
c[w++]=a[i];
c[w++]=b[i];//重新编号
}
sort(c,c+w);
int cnt=0;
for(int i=0;i<w;i++)
if(c[i]!=c[i+1])
index[c[i]]=++cnt;
for(int i=1;i<=n;i++)
{
x=index[a[i]];
y=index[b[i]];
update(1,cnt,1,x,y,i);
}
ans=0;
query(1,cnt,1);
printf("%d\n",ans);
}
return 0;
}

最新文章

  1. Invalid layout param in a LinarLayout: layout_weight
  2. 1.SpringMVC的简介和环境搭建
  3. 利用session完成用户登陆
  4. 搭建openvpn 未完成。。。
  5. input file美化
  6. php 数组 添加元素、删除元素
  7. 104. Maximum Depth of Binary Tree
  8. Excel日期格式单元格写成yyyy.MM.dd格式将无法读取到DataTable
  9. Open War I: 怪物繁殖,行走仿真,瞄准射击...
  10. JavaScript- The Good Parts Chapter 6
  11. 被Oracle全局暂时表坑了
  12. 【3】Chrome 的一些常用操作
  13. C# 将List中的数据导入csv文件中
  14. PHP unicode与普通字符串的相互转化
  15. react组件开发规范总结
  16. 直播流RTMP 知识
  17. 【ASP.Net】publish asp.net to local IIS
  18. urllib2特点--urllib2.Request对象,定制请求头部信息
  19. CH0103最短Hamilton路径 &amp; poj2288 Islands and Brigdes【状压DP】
  20. java中 static,final,transient,volatile关键字的作用

热门文章

  1. Docker实战之Redis-Cluster集群
  2. 热更新,App双开,App隐藏,App试用 -- Replugin的实际应用(原创)
  3. Manjaro 19.01 kde下Tim sogou软件安装问题及解决
  4. java反序列化-ysoserial-调试分析总结篇(5)
  5. CF 1305E. Kuroni and the Score Distribution
  6. Flutter01-学习准备
  7. 初识 “HTML”
  8. TensorFlow CPU环境 SSE/AVX/FMA 指令集编译
  9. 数据结构 - List 接口
  10. 数据挖掘算法——K-means算法