欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 蓝桥杯备赛(7):ST表

蓝桥杯备赛(7):ST表

2025/3/26 13:06:12 来源:https://blog.csdn.net/2301_80508598/article/details/146460716  浏览:    关键词:蓝桥杯备赛(7):ST表

RMQ问题

RMQ问题是针对于数组,每次给一个区间[l,r],要求返回区间内的最大值或最小值(的下标),也就是说,RMQ问题就是求区间最值的问题。

对于RMQ问题,容易想到一种O(n)的方法,就是用i直接遍历[l,r]区间,不断比较a[i]与max的大小关系,然后不断更新max,最后得出的就是最大值。

但是,我们可以利用倍增和动态规划的思想,利用“ST表”这个数据结构来帮助解决。

ST表

ST表是一种可以“静态求区间最值”的数据结构,本质上是一种dp

假设求区间最大值(最小值),状态表示:dp[i][j]表示从i开始,大小为2^j的长度的区间的最大值,即区间[i,i+2^j-1]的最大值。

状态转移方程:dp[i][j]=max(dp[i][i-1],dp[i+(1<<(j-1))[j-1]);(注意:状态转移的方向和区间合法)

代码模板:

int getMax(int l, int r) {int k = log(r - 1 + 1) / log(2);return max(dp[i][k], dp[r - (1 << k) + 1][k]);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词