尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

ST表学习笔记

ST表学习笔记
📅 发布时间:2026/6/21 21:53:32

前置知识:倍增

其实倍增就是二进制拆分,因为有的数可能很大,我们按照2的幂次去查询,就能用 \(log_2n\) 的时间复杂度求解

ST 表

创建

ST 表运用的是倍增思想,我们可以用 \(O(nlogn)\) 的时间创建一个二维表,根据倍增思想就可以实现 \(O(1)\) 的区间最值查询(RMQ 查询)

我们这样定义:

定义 \(dp[i,j]\) 表示 \([i,i+2^j-1]\) 区间的最值,易得这个区间的长度为 $ 2^j$ ,那么根据倍增,这个区间可以分成两个长度为 $ 2^{j-1} $ 的区间,使用递推求解,递推式如下(max 可换成 min):

\[dp[i,j]=\max(dp[i,j-1],dp[i+2^{j-1},j-1]) \]

那么我们可以得出模板代码:

void init_st(){int k=log2(n);for(int i=1;i<=n;i++){dp[i][0]=a[i];}for(int j=1;j<=k;j++){for(int i=1;i<=n-(1<<j)+1;i++){dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);}}
}

这里先枚举 \(k\) 是因为我们需要通过 \(k\) 来确定枚举的右区间,不然范围就会超过 \(n\)。

查询

我们要查询的是一个 \([l,r]\) 区间,我们可以这样理解一下:

C__Users_Administrator.DESKTOP-JVRO3LD_AppData_Roaming_com.codexu.NoteGen_article_笔记_assets_6962c137-a758-4eac-b44a-4184ed33480c

我们只要找到一个最大的不超过 \(l,r\) 长度的 2 的幂次 \(k\),就能用建好的 ST 表计算答案。

而根据对数的定义:

\[\log_2n=a \to 2^a=n \]

所以,我们有($ [l,r]$ 表示 \(l,r\) 这个区间的长度):

\[\log_2[l,r]=k\to 2^k=[l,r] \]

所以 \(k\) 的答案是\(\log_2 r-l+1\),其中 \(r-l+1\) 求的是区间 \([l,r]\) 的长度。

那么就能够得出查询的公式:

\[k=\log_2r-l+1\\ ans=\max(dp[l][k],dp[r-2^k+1][k]) \]

所以代码就很好写:

int k=__lg(y-x+1);
cout<<max(dp[x][k],dp[y-(1<<k)+1][k])<<endl;

总结

ST 表是基于倍增思想完成的一种支持 RMQ问题(静态区间最值问题查询)的数据结构

ST 表能够实现 \(O(n\log n)\) 建表

尝试独自完成洛谷 P3865 【模板】ST 表 & RMQ 问题

本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/19136873

相关新闻

  • 谈一类易实现的非四毛子线性 RMQ
  • 我们学会在具体情境中做出恰当判断
  • 分布式结构化存储系统-HBase访问方式

最新新闻

  • 政企协同筑通信屏障 本土担当护冰雪亚冬:海能达专网方案落地龙江,黑龙江单工科技以专业服务诠释保障使命 - 无线电评测大师
  • 告别暴力与冲动!湖北正规青少年特训基地,全方位纠正打架等极端行为 - 武汉中职最新信息发布
  • Qwen3-Coder-Next在AMD GPU上的vLLM部署实战指南
  • 基于NXP微控制器的ECG心率监测系统:从模拟前端到数字信号处理实战
  • Web安全实战:从SQL注入到WAF绕过,手把手教你靶场攻防
  • [智能体-487]:文明四阶演进脉络:地球碳基文明→数字世界→硅基文明→星际文明

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号