ST算法-区间最值问题(C++实现)
稀疏表算法(ST)简介给定一个长度为N的数组A,ST算法能在O(N*log(N))时间预处理后,以O(1)的时间复杂度在线回答“数列A中下标在l~r之间的数的最大值是都少”这样的区间问题。一个序列的子区间个数显然有O(N^2) 个,根据倍增思想,我们首先在这个规模为的状态空间里选择一些2的整数次幂的位置作为代表值。设dp[i, j]表示数列A 中下标在子区间[i, i+2^j-1]里的数列的最大值,也就是从 i 开始的2的j次幂个数的最大值。递推边界显然是dp[i][0]=A[i],即数列A在子区间[
原创
2020-09-15 10:04:14 ·
1428 阅读 ·
0 评论