浅说 ST表
数据结构 算法 动态规划ST 表 ST 表是利用倍增思想做预处理的一种数据结构,而预处理所指的算法自然就是动态规划。
这是一个二维的的动态规划,它的状态如下:
设 $f(i,j)$ 代表第 $i$ 个数到第 $i + 2^j - 1$ 个数的最大值,即为:$f(i, j) = \max(i,i + 2^j - 1)$
这里需要画下重点,请劳烦读者再观察一次该式,后面的推导全部基于此
$$f(i, j) = \max(i,i + 2^j - 1)$$
可以发现 $f(i, j)$ 所管辖的区间取决于 $[i, i + 2^{j - 1} - 1] , [i + 2^{j - 1},i + 2^j - 1]$ 这两个区间。
得转移公式:$f(i, j) = \max(f(i, j - 1), f(i + 2^{j - 1}, j - 1))$
Read more...