在之前的一篇博文中,我们介绍了使用Sparse Table(ST稀疏表)解决RMQ问题的方法。使用ST稀疏表对已知数据进行预处理,对于任意的询问请求都可以以O(1)的效率进行解答,作为一种离线算法,非常高效快速,特别适合用于进行RMQ问题的求解。
现在让我们考虑一种动态的RMQ问题,动态是指在我们询问的过程中,区间内某一位置的值会受到外界干预而发生改变,我们需要做的就是在每次改变的基础上对收到的询问给出正确的结果。
对于动态RMQ问题我们有如下三种思路:
- 使用朴素算法进行遍历查找;
- 使用SparseTable稀疏表进行求解,每次变化更新稀疏表;
- 使用二分线段树进行求解,每次变化进行相应的信息修改。
下面我们在一个较小数据量(10^4)的条件下对上述三种算法进行分析实现。