只保证自己看得懂。
设数组大小为 \(n\) ,叶节点个数为 \(N\) 。
zkw线段树为一颗满二叉树,故 \(N = 2^{\left\lceil\log_2 n\right\rceil}\) 。
建树可以这么写:
N = 1;
while (N < n) N <<= 1;
for (int i = N; i < N + n; ++i)
t[i] = Read();
for (int i = N - 1; i; --i)
t[i] = t[i << 1] + t[i << 1 | 1];
原文:https://www.cnblogs.com/kcn999/p/13762420.html