当前位置: 首页 > news >正文

蓝桥杯备赛(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]);
}

相关文章:

  • DeepSeek 指令符号及提示词示例
  • 【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解
  • 【C++教程】break语句
  • 认知篇#5:什么是激活函数?激活函数有什么用?几个简单激活函数的简介(1)
  • 连续型随机变量及其分布
  • AI Agent战国时代:Manus挑战者的破局之道与技术博弈
  • java江湖系列——集合世家争霸(下)
  • Redis集群模式(优缺点)
  • Flink基础简介和安装部署
  • playwright-go实战:自动化登录测试
  • 1. 找不能被3、5和7整除的数并存入列表。
  • C++常见问题与思考
  • Keil5调试技巧
  • olmOCR模型论文解读
  • c++(哈希以及封装)
  • ⭐算法OJ⭐判断二叉搜索树【树的遍历】(C++实现)Validate Binary Search Tree
  • 算法-最大公约数
  • 计算机二级(MS Office高级应用)知识点总结
  • 轴承的结构参数以及特征频率的计算
  • Transformer中,Fisher矩阵与权重之间关系
  • 澎湃回声丨23岁小伙“被精神病8年”续:今日将被移出“重精”管理系统
  • 论法的精神︱张玉敏:知识产权保护要为社会经济文化发展服务
  • 伊朗内政部长:港口爆炸由于“疏忽”和未遵守安全规定造成
  • 马上评丨学生举报食堂饭菜有蛆,教育局应该护谁的犊子
  • 106岁东江纵队老战士、四川省侨联名誉主席邱林逝世
  • 以军称若停火谈判无进展,将大幅扩大加沙军事行动