有一类特殊的算法编码问题需要我们评估多种查询,这些查询可以是两种类型:
我最近一直在努力的一个例子是(虽然不是唯一的例子):Quadrant Queries
现在,为了优化我的算法,我有一个想法: 我可以使用动态编程来保持特定范围的搜索结果,并根据需要生成其他范围的数据。
例如,如果我必须计算从索引4到7的数组中的数字总和,我可以将元素之和保持为4,元素之和最多为7,这很容易然后我只需要区别两个+第四个元素是O(1)。但这引发了另一个问题:在更新操作期间,我将不得不更新我存储的搜索数据,以查找更新后的元素后面的所有元素。这似乎效率低下,虽然我没有尝试过。
有人建议我可以使用一些特殊的数据结构组合后续更新操作。(实际上在某个论坛上阅读)。
问题: 有没有一种已知的方法来优化这类问题?是否有特殊的数据结构呢?我提到的想法;它可能比直接方法更有效吗?我应该尝试一下吗?