离散化+线段树 POJ 2528 (Mayor's posters)
来源:互联网 发布:迅雷mac版下载速度为0 编辑:程序博客网 时间:2024/04/30 08:14
昨天开始接触线段树,感觉是很简单的数据结构,今天我发现我错了。
今天从早上纠结到现在,一直在看线段树有关的问题,其中POJ 2401(线段树+并归排序)还没有解决。发现线段树非常灵活,要掌握好也非常难。
在参考别人的基础上,做了POJ 2528。
现在总结一下要点:
1,离散化:题目中给出的海报长度范围时1~10000000,因此不可能建立一个如此大的线段树。而观察海报数量范围1~10000,相对来小就小的多了。于是考虑离散化方法:将所有海报的坐标(起始点和终点)排序,这些点最多也就有20000个,每张海报本来使用起始/终点坐标来表示的,现在可以使用起始/终点的“rank”作为映射来表示。
例如有三张海报:p1(1,100),p2(2,8) p3(3,6)
那么将所有起始/终点排序后存放在map:1,2,3,6,8,100。(注意可能存在重复的元素)
从而p1,p2和p3可以用(map[1],map[6]),(map[2],map[5)和(map[3],map[4])表示。于是可以建立一个[1,6]的线段树。
2,参考别人的做法,线段树每个节点增加一个域:c。
c>0表示此节点(某一段)被唯一的一张海报覆盖。
c=0表示未被任何海报覆盖或者被多于一张海报覆盖。
这样在所有海报张贴完毕后,搜索可现实海报种类时,只要遇到某个节点(某一段)的c是1,那么就不需要搜索子区域。这也是线段树“对段操作的优雅性“的体现。不需要搜索到每一个点。
- 离散化+线段树 POJ 2528 (Mayor's posters)
- POJ - 2528 Mayor's posters(线段树+离散化)
- POJ Mayor's posters 2528(线段树+离散化)
- POJ 2528 Mayor's posters(离散化+线段树)
- poj 2528 Mayor's posters 离散化 线段树
- POJ 2528 Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters 线段树+离散化
- POJ 2528 Mayor's posters (线段树+离散化)
- POJ 2528 Mayor's posters(离散化+线段树)
- POJ 2528 Mayor's posters 线段树+离散化
- POJ 2528 Mayor's posters(线段树+离散化)
- POJ 2528 Mayor's posters (线段树+离散化)
- poj 2528 Mayor's posters(线段树+离散化)
- POJ 2528 Mayor's posters 线段树+离散化
- poj - 2528 - Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters(离散化+线段树)
- POJ 2528 Mayor's posters (线段树+离散化)
- C#泛型
- JVM class加载机制的总结 收藏
- 拯救地球的最后机会,就在哥本哈根峰会
- Fastreport使用经验(转)
- Eucalyptus 驱动 Ubuntu 9.10 商业云计算
- 离散化+线段树 POJ 2528 (Mayor's posters)
- 在delphi中取存储过程的返回值
- 批处理:FOR的参数/D和/R
- Protues 7.6仿真430 + LCD 简易贪食蛇
- 我的代码总结之.NET连接数据库对象分析一dataAdaper
- 生成素数的算法1,2,3
- 编写Java程序的三十个基本规则
- Discuz!的Memcache缓存实现
- (转帖)vs2008 90天试用版激活