我们有一个数组arr[0 . . . n-1]
。我们应该能够
arr[i] = x
的指定元素的值,其中0 <= i&lt; = n-1。这可以使用段树有效地解决。
但如何解决与此相反的问题
array arr[i] = x
指定元素的值,其中0&lt; = i&lt; = n-1。如何像分段树一样有效地解决上述问题?
答案 0 :(得分:1)
假设您可以使用分段树轻松计算总和(L,R)。
首先,计算整个数组的总和,称为total
。
对于位置arr
的更改
照常更新细分树。
更新total = total - oldValue + newValue
。
对于每个查询,请打印total - sum(L,R)
注意:我们也可以使用binary indexed tree(a.k.a Fenwick tree)来解决这个问题,哪种IMO更适合。