线段树空间开4倍的原因
如果证明有错欢迎指出。
对于长为 n n n 的序列,显然以其构建的线段树有 n n n 个叶子节点
此时线段树的高度为 k = log 2 n + 1 k=leftlceil{log_2 n} ight ceil+1 k=log2n+1 (第一层的高度为 1 1 1 )
通过等比数列求和公式
S n = { n a 1 , q = 1 a 1 ( 1 q n ) 1 q = a 1 a n q 1 q , q ≠ 1 egin{aligned} S_n= egin{cases} na_1,&q=1 \\ dfrac{a_1left(1-q^n ight)}{1-q} = dfrac{a_1-a_nq}{1-q} ,&q e 1 end{cases} end{aligned} Sn=na1,1qa1(1qn)=1qa1anq,q=1q=1
可知
至多有 1 × ( 1 2 k ) 1 2 = 2 k 1 dfrac{1 imes(1-2^k)}{1-2} = 2^k-1 121×(12k)=2k1 个结点
即有 2 log 2 n + 1 1 2^{leftlceil{log_2 n} ight ceil+1}-1 2log2n+11 个结点
根据
x x = { 0 , if x ∈ Z , 1 , if x Z . egin{aligned} &leftlceil{x} ight ceil- leftlfloor{x} ight floor=egin{cases} 0,& ext{if } x in Z,\\ 1,& ext{if }x otin Z. end{cases}end{aligned} xx=0,1,ifx∈Z,ifx∈/Z.
可知