Sparse Table算法
一般RMQ的Sparse Table(ST)算法是基于倍增思想设计的O(Nlog2N) – O(1)在线算法
算法记录从每个元素开始的连续的长度为2k的区间中元素的最小值,并以在常数时间内解决询问;
Tarjan算法
解决LCA问题的Tarjan算法利用并查集在一次DFS(深度优先遍历)中完成所有询问。它是时间复杂度为O(Na(N) + Q)的离线算法
±1RMQ算法
算法的核心思想在于分块:
以L = log2N / 2块长把B划分为M = N / L段,记录第k块的最小元素为BlockMin(k),把M块的最小值组成序列Blocks,利用分块思想,我们可以把询问分为两个部分询问: