李超线段树

李超线段树

https://ac.nowcoder.com/discuss/180365

可以处理二维平面上加入线段,然后查询单点最大值。

首先我们定义一个区间的最优势线段,为区间中点值最大的线段,然后我们发现处理询问,我们只需要将经过的线段树节点上的最优势线段对应的点值取max即可。

然后考虑如何处理修改,首先将线段划分到\(O(logn)\)个线段树节点上。

  1. 如果当前线段被最优势线段完全覆盖,那么直接return
  2. 如果当前线段完全覆盖最优势线段,那么更改最优势线段然后return
  3. 如果当前线段和最优势线段有交点,那么首先判断中点大小,然后对应交换,然后对于修改线段判断交点左右位置,向下继续递归修改。

然后我们考虑复杂度,每次继续递归不会超过\(O(logn)\)次,所以修改总复杂度是\(O(nlog^2n)\)

posted @ 2021-03-10 11:04  dinlon  阅读(67)  评论(0)    收藏  举报