【问题标题】:Data structure to answer queries回答查询的数据结构
【发布时间】:2020-09-17 18:56:27
【问题描述】:

在想出一个数据结构来回答这个问题时需要一些帮助。目标是对数组执行以下类型的 Q 查询:

  1. 类型 1:给定 L 和 R,返回
  2. 类型 2:使用值 val 更新位置 idx

如何有效地回答这些问题?天真的方式是n^2。我一直在考虑保持累积总和,因为 A_j 因素超出了上述等式的总和。

【问题讨论】:

    标签: algorithm math data-structures


    【解决方案1】:

    This 就是你要找的东西。

    Fenwick 树或二叉索引树是一种数据结构,可以 有效地更新元素并计算表中的前缀和 数字。

    【讨论】:

    • 这种解释是否正确:我们将有一个 Fenwick 树或一个 Segment 树来回答总和查询,然后对于给定的查询,我们计算 A[i] * (sum of A[i + 1]到 A[n]) + A[i + 1] * (A[i + 2] 到 A[n] 的总和) 等等。这将使每个查询 O(n)。
    • 每个查询都需要 O(logn)。我推荐 this playlist 以更好地了解 Fenwick 树。
    • 谢谢,会检查链接。
    【解决方案2】:

    Segment TreeFenwick TreeSquare Root Decomposition 是有用的数据结构,可以以更好的时间复杂度解决此类问题。 (比 n^2 快)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      相关资源
      最近更新 更多