poj2528 贴海报
题意:贴海报,海报可以覆盖,会给出你每张海报的长宽,然后问你最后还能看到几张海报。
思路:不离散化,范围太大,时间复杂度和空间复杂度都太高,所以要进行离散化处理,此处用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 贴海报相关推荐
- poj2528贴海报(线段树离散化)
//poj2528贴海报(线段树离散化) #include<cstring> #include<iostream> #include<cstdio> #includ ...
- poj-2528线段树练习
title: poj-2528线段树练习 date: 2018-10-13 13:45:09 tags: acm 刷题 categories: ACM-线段树 概述 这道题坑了我好久啊啊啊啊,,,, ...
- POJ-2528 Mayor's posters (离散化, 线段树)
题目传送门: POJ-2528 题意就是在一个高度固定的墙面上贴高度相同宽度不同的海报,问贴到最后还能看到几张?本质上是线段树区间更新问题,但是要注意的是题中所给数据范围庞大,直接搞肯定会搞出问题,所 ...
- 小程序画布画海报保存成图片可以保存实现完整代码
老规矩先来个效果图: 因为是截图所以会有些模糊,在真机上会比较清晰 下面针对效果图来看看里面都画了什么元素,代码在文章的最后,大家想直接拷代码可以略过这,这里是方便大家理解代码. 首先,咱们的海报有几 ...
- 用 Python 快速制作海报级地图
作者:费弗里 来源:Python大数据分析 1 简介 基于Python中诸如matplotlib等功能丰富.自由度极高的绘图库,我们可以完成各种极富艺术感的可视化作品,关于这一点我在系列文章在模仿中精 ...
- [推荐]Silverlight 2 开发者海报
从Brad Abrams的Blog上看到了一张Silverlight 2开发者海报,非常酷,拿出来与大家分享. [JPG版本 5.8MB] [PNG版本 6.5MB] [TIF版本 19.9 MB] ...
- 哇 跨行竞争 Python竟能替代PS完成海报设计
海报是我们日常生活工作中最常使用到的平面设计类型.很多精美的海报做出来就像艺术品一样让人赞叹不已.但ps和AI都比较复杂难学,不会这些软件就没办法随心所欲做海报了吗? 当然不是,如果你会编程,制作海报 ...
- Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条
Seaborn使用set_context函数调整绘图标签和线条的大小.设置不同的模式.例如notebook模式.PPT模式.海报模式等.set_context函数可以指定绘图上下文并自动调整标签和线条 ...
- AI设计师“鲁班”进化史:每秒制作8000张双11海报,没一张雷同!
在过去,每年双11,设计师们都会开启狂加班模式:做海报.改文字.换商品.调设计.换 banner,每个设计师对接几个运营人员,富士康流水线一样的重复性工作.一年双 11 下来,完成上亿张海报. 然而, ...
最新文章
- 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
- 记一次OOM问题排查过程
- 智能车竞赛技术报告 | 节能信标组组 - 大连民族大学 - 粉红靓车队
- 那个能力很强的程序员学历造假,被辞退了!
- 遇到的Ajax相关问题
- vue8种组件通信方式
- linux 后台一直执行的sh
- js 中meta 移除head_JS函数和winform函数之间的相互调用
- python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...
- c语言表白代码颜色,C语言告白代码,一闪一闪亮晶晶~
- 一分钟在云端快速创建MySQL数据库实例
- 现代汉语常用汉字3500表
- 疯狂星期四,但是程序员
- EWM 创建包装物料
- 【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置
- 用_crol_函数实现LED流水灯的调试过程
- 一次spinlock死锁故障的定位(太经典,收藏!)
- PrecompiledAssemblyException: Multiple precompiled assemblies with the same name websocket-sharp.dll
- 语音计算机软件,语音计算器
- opencv 图片上画一条线