我知道可以使用段树来找到的子数组的总和。根据此处的教程,该操作可以在时间内完成。
但是我无法证明查询时间确实是。此链接(以及许多其他链接)说,我们可以证明在每个级别上,已处理的最大节点数为,因此。
但是,我们怎么可能通过矛盾来证明这一点呢?
如果是这样,如果我们将分段树用于高维数组的范围和,该证明将如何扩展?
例如,我可以考虑通过将原始矩阵划分为4个象限(类似于线性阵列中的一半)来找到一个子矩阵总和,以构建一个象限分段树,但是证明使我难以理解。
段树的构建是O(n),查询是O(log n),更新是O(log N)。它优于总和数组的好处在于更新的复杂性。
—
Nurlan