![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
文章平均质量分 72
u010290366
这个作者很懒,什么都没留下…
展开
-
扫描线 窗内的星星
题目链接:248. 窗内的星星算法分析经过亚特兰蒂斯 那题的洗礼,这道扫描线题目就显得简单多了。但是很多细节还是得注意。这里只说细节。1.边框上的星星不算怎么处理。如下图:左下角的星星坐标为(x,y)(x,y)(x,y),如果边框上的星星算的话,那么整个蓝色区域都可以放置边框的右上角顶点。如果不算的话,因为星星的坐标都是整数,边框的宽高也是整数,所以可放置的区域范围大致如上图绿色,在绿色区域中放置边框的右上角顶点,该星星肯定能被包含在内。假设就这一颗星星,为了方便计算,可以考虑将星星和区域整体向原创 2021-04-07 18:00:46 · 152 阅读 · 0 评论 -
扫描线 亚特兰蒂斯
题目链接:247. 亚特兰蒂斯算法分析只说细节。这道题目不是特别严格的线段树,因为线段树维护的信息具有区间可合并性,这道题目想了很久想不出可以区间直接合并的信息。我们在这里维护的是离散化后表示小段的数组,设为a[]a[]a[]吧,对于一个边界的两个纵坐标,设为y1y1y1和y2y2y2,离散化后的结果为[al,ar][al,ar][al,ar],这是点,如果要对应到小段,那么则是[al,ar−1][al,ar-1][al,ar−1]。在每个区间结点上,设cnt表示该区间被完整扫过的次数,这里强调下,原创 2021-04-03 19:31:22 · 180 阅读 · 0 评论 -
255. 第K小数
题目链接:255. 第K小数算法分析据说这道题可以用来练习多种高级数据结构,本题是用可持久化线段树解的。算法分析可参考进阶指南。需要注意的是:线段树的空间开销。离散化后,取值区间最大为[1,n]。这是值域。在值域上建立初始线段树,因为不是按照层次编号,所以开销为2∗n2*n2∗n。后面nnn个数字分别插进去,建可持久化树,每次开销为lognlognlogn,共nnn次。nnn最大为100000,所以空间总开销2∗n+18∗n=20n2*n+18*n=20n2∗n+18∗n=20n足矣。时间开原创 2021-03-31 20:08:37 · 212 阅读 · 0 评论