当我们进行范围更新时,有人可以帮助我理解二叉索引树吗?为什么不更新每个元素,为什么只更新开始元素和结束元素
例如 0
我们必须将 BIT 中的数组元素范围更新为 arr[x] 到 arr[y] 。根据二叉索引树点更新函数。它将更新索引 x 的累积频率,并且所有那些索引 > 比 x 都会受到更新的影响.
但是,如果我们使用点更新功能进行范围更新。那为什么我们不使用点更新功能更新每个大于 x 和小于 y 的索引。由于范围更新意味着每个元素都应该使用值进行更新,并且更新起始索引和一个高于结束索引如何涵盖所有更新
为什么我们不做
.....................................................
for (i =[x] to [y])
pointupdate(ar[i],val);// why we are not doing this
update(p, v): //point update
for (; p <= N; p += p&(-p))
ft[p] += v
# Add v to A[a...b]
update(a, b, v): // why we are using this only for update of one element how other elements greater than a will be coverd
update(a, v)
update(b + 1, -v)
我