RMQ问题-ST方法

参考 http://blog.csdn.net/sdj222555/article/details/7875575

RMQ 就是 Range Minimum/Maximum Query 就是求区间最值问题。

可以写一个线段树,但是预处理和查询的复杂度都是O(logn)。这里有更牛的算法,就是ST算法,它可以做到O(nlogn)的预处理,O(1)!!!地回答每个询问。

Sparse Table 稀疏表

就是 f[i,j]表示从第i个数起连续2^j个数中的最大值。

我们要求区间[2,8]的最大值,就要把它分成[2,5]和[5,8]两个区间,因为这两个区间的最大值我们可以直接由f[2,2]和f[5,2]得到。扩展到一般情况,就是把区间[l,r]分成两个长度为2^n的区间。

原文地址:https://www.cnblogs.com/charlesblc/p/6591485.html