题意:贴海报,海报可以覆盖,会给出你每张海报的长宽,然后问你最后还能看到几张海报。

思路:不离散化,范围太大,时间复杂度和空间复杂度都太高,所以要进行离散化处理,此处用map优化。然后就是普通的线段树了。需要注意的是query函数中的一些处理细节。

#include<cstdio>
#include<cstring>
#include<map>
#include<iterator>
#include<iostream>
using namespace std;
struct node
{int l,r;
}p[20009];
map<int,int> s;
map<int,int>:: iterator it;
struct tree
{int l,r,c;
}tr[100009];
int used[20009],an;
void build(int rot,int l,int r)
{//cout<<l<<" "<<r<<endl;tr[rot].l=l;tr[rot].r=r;tr[rot].c=-1;if(l==r) return;build(2*rot,l,(l+r)/2);build(2*rot+1,(l+r)/2+1,r);
}
void place(int rot,int l,int r,int c)
{if(tr[rot].l==l&&tr[rot].r==r){tr[rot].c=c;return;}int mid=(tr[rot].l+tr[rot].r)/2;if(tr[rot].c>0){tr[2*rot+1].c=tr[2*rot].c=tr[rot].c;tr[rot].c=0;}if(r<=mid){place(2*rot,l,r,c);}else if(l>mid){place(2*rot+1,l,r,c);}else{place(2*rot,l,mid,c);place(2*rot+1,mid+1,r,c);}
}
void query(int rot)
{//cout<<tr[rot].l<<" "<<tr[rot].r<<" "<<tr[rot].c<<endl;if(tr[rot].c<1){if(tr[rot].l!=tr[rot].r){query(2*rot);query(2*rot+1);}    }else {if(used[tr[rot].c]==0){used[tr[rot].c]=1;an++;}}
}
int main()
{//FILE *fp=fopen("t.txt","r");int num,t,n;scanf("%d",&t);while(t--){scanf("%d",&n);s.clear();int id=1;for(int i=0;i<n;i++){scanf("%d%d",&p[i].l,&p[i].r);s[p[i].l]=1;s[p[i].r]=1;}num=s.size();for(it=s.begin();it!=s.end();it++)it->second=id++;build(1,1,num);for(int i=0;i<n;i++){place(1,s[p[i].l],s[p[i].r],i+1);}memset(used,0,sizeof(used));an=0;query(1);printf("%d\n",an);}return 0;
}

poj2528 贴海报相关推荐

  1. poj2528贴海报(线段树离散化)

    //poj2528贴海报(线段树离散化) #include<cstring> #include<iostream> #include<cstdio> #includ ...

  2. poj-2528线段树练习

    title: poj-2528线段树练习 date: 2018-10-13 13:45:09 tags: acm 刷题 categories: ACM-线段树 概述 这道题坑了我好久啊啊啊啊,,,, ...

  3. POJ-2528 Mayor's posters (离散化, 线段树)

    题目传送门: POJ-2528 题意就是在一个高度固定的墙面上贴高度相同宽度不同的海报,问贴到最后还能看到几张?本质上是线段树区间更新问题,但是要注意的是题中所给数据范围庞大,直接搞肯定会搞出问题,所 ...

  4. 小程序画布画海报保存成图片可以保存实现完整代码

    老规矩先来个效果图: 因为是截图所以会有些模糊,在真机上会比较清晰 下面针对效果图来看看里面都画了什么元素,代码在文章的最后,大家想直接拷代码可以略过这,这里是方便大家理解代码. 首先,咱们的海报有几 ...

  5. 用 Python 快速制作海报级地图

    作者:费弗里 来源:Python大数据分析 1 简介 基于Python中诸如matplotlib等功能丰富.自由度极高的绘图库,我们可以完成各种极富艺术感的可视化作品,关于这一点我在系列文章在模仿中精 ...

  6. [推荐]Silverlight 2 开发者海报

    从Brad Abrams的Blog上看到了一张Silverlight 2开发者海报,非常酷,拿出来与大家分享. [JPG版本 5.8MB] [PNG版本 6.5MB] [TIF版本 19.9 MB] ...

  7. 哇 跨行竞争 Python竟能替代PS完成海报设计

    海报是我们日常生活工作中最常使用到的平面设计类型.很多精美的海报做出来就像艺术品一样让人赞叹不已.但ps和AI都比较复杂难学,不会这些软件就没办法随心所欲做海报了吗? 当然不是,如果你会编程,制作海报 ...

  8. Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条

    Seaborn使用set_context函数调整绘图标签和线条的大小.设置不同的模式.例如notebook模式.PPT模式.海报模式等.set_context函数可以指定绘图上下文并自动调整标签和线条 ...

  9. AI设计师“鲁班”进化史:每秒制作8000张双11海报,没一张雷同!

    在过去,每年双11,设计师们都会开启狂加班模式:做海报.改文字.换商品.调设计.换 banner,每个设计师对接几个运营人员,富士康流水线一样的重复性工作.一年双 11 下来,完成上亿张海报. 然而, ...

最新文章

  1. 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
  2. 记一次OOM问题排查过程
  3. 智能车竞赛技术报告 | 节能信标组组 - 大连民族大学 - 粉红靓车队
  4. 那个能力很强的程序员学历造假,被辞退了!
  5. 遇到的Ajax相关问题
  6. vue8种组件通信方式
  7. linux 后台一直执行的sh
  8. js 中meta 移除head_JS函数和winform函数之间的相互调用
  9. python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...
  10. c语言表白代码颜色,C语言告白代码,一闪一闪亮晶晶~
  11. 一分钟在云端快速创建MySQL数据库实例
  12. 现代汉语常用汉字3500表
  13. 疯狂星期四,但是程序员
  14. EWM 创建包装物料
  15. 【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置
  16. 用_crol_函数实现LED流水灯的调试过程
  17. 一次spinlock死锁故障的定位(太经典,收藏!)
  18. PrecompiledAssemblyException: Multiple precompiled assemblies with the same name websocket-sharp.dll
  19. 语音计算机软件,语音计算器
  20. opencv 图片上画一条线

热门文章

  1. Java Version Mismatch
  2. Windows部分快捷键命令/命令
  3. PLC闪烁电路的实现
  4. CF1146G Zoning Restrictions 最小割
  5. 用python绘制小猪佩奇
  6. 细胞亚器文章阅读ER-to-Plasma Membrane Tethering Proteins Regulate Cell Signaling and ER Morphology
  7. 【笔试题目整理】 网易2018校园招聘数据分析工程师笔试卷
  8. 上善若水,水利万物而不争
  9. 音频左右声道数据合并到一个声道
  10. [附源码]java毕业设计家政管理系统