Zkw线段树

void build(int n) for (M = 1; M <= n + 1; M <<= 1); for (int i = 1; i <= n; ++i) cin >> tree[M + i]; // 叶子节点位置 for (int i = M - 1; i >= 1; --i) tree[i] = tree[i << 1] + tree[i << 1 Use code with caution. 2. 单点修改

假设我们要进行:

On a sum tree, find smallest p such that sum[0..p] >= k . zkw线段树