2

有一类特殊的算法编码问题需要我们评估多个查询,这些查询可以是两种:

  1. 对一系列数据执行搜索
  2. 更新给定范围内的数据

我最近一直在研究的一个例子是这个(虽然不是唯一一个):Quadrant Queries

现在,为了优化我的算法,我有一个想法:我可以使用动态编程来保留特定范围的搜索结果,并根据需要为其他范围生成数据。

例如,如果我必须计算数组中从索引 4 到 7 的数字总和,我已经可以将元素总和保持在 4 以内,将元素总和保持在 7 以内,这很容易,然后我只需要两者的差+ 第 4 个元素,即 O(1)。但这引发了另一个问题:在更新操作期间,我必须为更新元素之后的所有元素更新我存储的搜索数据。这似乎效率低下,尽管我没有实际尝试过。

有人建议我可以使用一些特殊的数据结构来组合后续的更新操作。(实际上在某个论坛上阅读过)。

问题: 有没有已知的方法来优化这类问题?是否有特殊的数据结构可以做到这一点?我提到的想法;它是否可能比直接方法更有效?我应该尝试一下吗?

4

1 回答 1

1

它可能会有所帮助: Segment Trees(Range-Range 部分)

于 2013-08-31T19:58:40.690 回答