可以发现,全局插入时李超线段树的复杂度是O(nlogn)O(nlogn)的,但是区间插入时复杂度是O(nlog2n)O(nlog2n)
李超线段树是一种数据结构,用于在线维护一个二维平面直角坐标系中的线段集合,并支持查询与某条垂直于x轴的直线相交的所有线段中交点的纵坐标的最大(或最小)值。它通过在每个节点维护一个“最优势线段”(即在节点对应区间中点处取得最大或最小值的线段)来实现高效查询。
于是我们就可以直接将一个决策看作一条斜率为fj⋅RjRj⋅aj+bjfj⋅RjRj⋅aj+bj、纵轴截距为fjRj⋅aj+bjfjRj⋅aj+bj的直线,对于ii,我们要求的就是已有的所有决策直线与x=aibix=aibi交点纵坐标的最大值。于是就可以直接用李超线段树进行维护。 参考文章 [1]李超线段树 - 小蒟蒻yyb [2]李超线段树 - ...
李超线段树是线段树的一个变种,支持在平面直角坐标系中动态插入线段,查询一条竖线与所有线段的交点纵坐标的最大值或最小值。 引入 下面以 【HEOI2013】Segment 为例讲解李超线段树。 题目大意: 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段。记第 \(i\) 条被插入的线段的标号为 \(i\)。 给定...
李超线段树是一种高效维护区间最大值的数据结构,适合处理如x坐标下y轴最大值等场景。其处理策略分为六种情况,对于插入的直线在区间内严格大于的情况,直接将该直线放入区间;若严格小于,则直接返回。关键在于后四种情况。我们以中间mid处的线段为主,交点必定位于线段的左侧或右侧。若交点在左侧,我们...
李超线段树入门 算法总概 李超线段树用于维护线段和直线与某条直线交点的最值 类似一个凸包的东西 大致思路: 插入时通过线段树记录与更新,每个区间可能的最优的直线 查询时,对于覆盖在某个点之上的所有区间求其最值 插入的细节(现在考虑最大值): 若当前区间没有直线,加入当前直线即可 ...
李超线段树的每个节点,都维护这一个优势线段。这个优势线段使得该节点所维护区间的中点在该优势线段上最大。 修改 考虑如何维护上面的结点呢。 分三种情况讨论: 1.该区间无优势线段或要插入的线段在该区间内完全在优势线段之上,将该区间的优势线段记为该线段并返回。
李超线段树的每个节点,都维护这一个优势线段。这个优势线段使得该节点所维护区间的中点在该优势线段上最大。 修改 考虑如何维护上面的结点呢。 分三种情况讨论: 1.该区间无优势线段或要插入的线段在该区间内完全在优势线段之上,将该区间的优势线段记为该线段并返回。
李超线段树的核心是维护每个区间的“最优势线段”,即在每个区间的中点处最高的线段。询问时我们可以对所有包含横坐标为 x 的位置的区间上的最优势线段计算答案,最后取个 max。 其实这就相当于维护一个记录当前区间最高线段的,不下传标记的线段树。(显然如果我们访问到的区间内只包含询问的横坐标,那么这个区间的最...
一、算法介绍李超线段树是一种用于维护平面直角坐标系内线段关系的数据结构。它常被用来处理这样一种形式的问题:给定一个平面直角坐标系,支持动态插入一条线段,询问从某一个位置$ (x,+\infty) $向下看能看到的最高的一条线段。 如图,有三条线段,两条红色竖线代表两个询问,则点$A$与点$ B $就是询问到的答...