李超线段树
李超线段树
https://ac.nowcoder.com/discuss/180365
可以处理二维平面上加入线段,然后查询单点最大值。
首先我们定义一个区间的最优势线段,为区间中点值最大的线段,然后我们发现处理询问,我们只需要将经过的线段树节点上的最优势线段对应的点值取max即可。
然后考虑如何处理修改,首先将线段划分到\(O(logn)\)个线段树节点上。
- 如果当前线段被最优势线段完全覆盖,那么直接return
- 如果当前线段完全覆盖最优势线段,那么更改最优势线段然后return
- 如果当前线段和最优势线段有交点,那么首先判断中点大小,然后对应交换,然后对于修改线段判断交点左右位置,向下继续递归修改。
然后我们考虑复杂度,每次继续递归不会超过\(O(logn)\)次,所以修改总复杂度是\(O(nlog^2n)\)