关于线段树合并的最大空间
查看原帖
关于线段树合并的最大空间
526713
_111_楼主2025/7/24 19:04

两个 add 操作插入的路径可能共享一部分前缀,这些前缀节点只会建一次。

一个线段树中,操作次数越多重复的节点就越多,实际新建的结点就越少,所以我们要使每个线段树的操作数尽可能的小。

总共会修改4*n个节点,假设原树上每个节点都刚好修改四次,每次颜色都不同,那么原树上每个节点对应的线段树都会增加logn + logn - 1 + (logn - 2) * 2个点。

  • 第一次加点:log(n) 个新节点
  • 第二次加点:log(n) - 1 个新节点(因为根重合)
  • 第三次:log(n) - 2 个
  • 第四次:log(n) - 2 个(路径重合)

n = 1e5时,18 + 17 + 16 * 2 = 67个节点,所以每个线段树增加67个节点,总增加节点为67 * N = 6.7*10^6。

是否可能达到这种极端情况?

2025/7/24 19:04
加载中...