继续我的最后两个问题,“最小范围查询方法(从树到受限 RMQ) ”和“最小范围查询方法(最后步骤) ”
我在 TopCoder 上遵循了本教程,该方法在最后一节中介绍。
现在假设我已经完成了所有工作,并且准备好进行查询。根据教程,这是我应该做的:
i 和 j 在同一个块中,所以我们使用在 P 和 T 中计算的值
例如,如果有这样的块:
000111
最小值当然在第三个 0 中,但如果 i 和 j 像 4 和 6,则第三个 0 不会在查询条件中。我的理解错了吗?
i 和 j 位于不同的块中,因此我们计算三个值:使用 P 和 T 计算从 i 到 i 块末尾的最小值,使用对 A' 的预计算查询,计算 i 和 j 块之间的所有块的最小值,以及来自j的块开始到j,再次使用T和P;最后返回使用您刚刚计算的三个值的总体最小值的位置。
为什么要计算从 i 到 i 块末尾的最小值以及从 j 块开始到 j 的最小值?两者的答案不都在 i...j 之外吗?另外,如果它不像最后一个问题那样完全合适,该怎么做。