查找数组中除索引 L 到 R 之外的所有元素的总和

Find sum of all elements of an array excluding index L to R

本文关键字:元素 数组 索引 查找      更新时间:2023-10-16

我们有一个数组arr[0 . . . n-1]。我们应该能够

  1. 求索引 L 到 R 的元素之和,其中 0 <= L <= R <= n-1 。
  2. 将数组的指定元素的值更改为arr[i] = x其中 0 <= i <= n-1。

这可以使用段树有效地解决。

但是如何解决与此相反的问题,即

  1. 求索引 0 到 n-1 的所有元素 (arr[i]) 的总和,不包括 L<= i <= R,其中给出了 L 和 R。
  2. 更改array arr[i] = x的指定元素的值,其中 0 <= i <= n-1。

如何像段树一样有效地解决上述问题?

假设您可以使用段树轻松计算总和(L,R)。

首先,计算整个数组的总和,称为total

用于更改位置 i 处的arr

  • 像往常一样更新段树。

  • 更新total = total - oldValue + newValue .

对于每个查询,打印total - sum(L,R)

注意:我们也可以使用二叉索引树(又名芬威克树)来解决这个问题,IMO 更适合。