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

25.5.22学习总结

ST表(Sparse Table,稀疏表)是一种用于高效解决静态区间最值查询(RMQ)问题的数据结构。其核心思想是通过预处理每个长度为2^j的区间的最值,使得查询时只需合并两个子区间的最值即可得到结果,从而实现O(1)的查询复杂度。

一、核心特性

  1. 预处理时间复杂度O(nlog⁡n)

  2. 查询时间复杂度O(1)

  3. 适用场景:静态数据(无修改操作)的区间最值查询。

  4. 支持操作:可重复贡献且可结合的运算(如最大值、最小值、最大公约数等)。

二、构建过程

  1. 初始化

    • 定义二维数组st,其中st[i][j]表示从位置i开始、长度为2j的区间的最值。

    • 初始时,st[i][0] = arr[i](即长度为1的区间的最值为元素本身)。

  2. 动态规划填充

    • 对于每个j(1≤j≤⌊log⁡2n⌋),遍历所有可能的起点i,满足i+2j−1<n

    • 状态转移方程:

      st[i][j]=op(st[i][j−1],st[i+2j−1][j−1])其中op为合并操作(如取最大值或最小值)。

三、查询过程

对于区间[L,R]的最值查询:

  1. 计算区间长度:len=R−L+1。

  2. 确定最大幂次:k=⌊log⁡2len⌋。

  3. 合并子区间结果

    result=op(st[L][k],st[R−2k+1][k])这两个子区间分别覆盖[L,L+2k−1]和[R−2k+1,R],确保完全覆盖原区间。

四、优缺点分析

  • 优点

    • 查询速度快(O(1))。

    • 适用于多次查询静态数据的场景。

  • 缺点

    • 不支持动态修改。

    • 仅适用于可重复贡献的操作。

 五、ST表与线段树的比较

1. 时间复杂度对比

操作

ST表

线段树

预处理

O(nlog⁡n)

O(n)

查询

O(1)

O(log⁡n)

更新

不支持

O(log⁡n)

  • ST表:查询极快(常数时间),但预处理稍慢,且不支持动态修改。

  • 线段树:查询和更新均为对数时间,支持动态数据。

2. 空间复杂度对比

数据结构

空间复杂度

ST表

O(nlog⁡n)

线段树

O(n)

  • ST表:需要二维数组存储预处理结果,空间消耗较大。

  • 线段树:通常用一维数组实现(类似堆),空间更优。

3. 功能对比

功能

ST表

线段树

静态区间最值(RMQ)

✔️

✔️

动态区间最值/和

✔️

区间更新

✔️

可扩展性

✔️

4. 适用场景

  • 选择ST表

    • 数据静态不变,且需要极快查询(如高频RMQ)。

    • 无需支持修改操作。

    • 例如:离线处理大量查询的RMQ问题。

  • 选择线段树

    • 数据动态变化,需要支持更新。

    • 查询类型复杂(如区间和、区间最值混合)。

    • 例如:实时更新的数据库区间统计。

六、例题


【模板】ST 表 && RMQ 问题https://www.luogu.com.cn/problem/P3865

http://www.xdnf.cn/news/590617.html

相关文章:

  • MCP Server Tool 开发学习文档
  • 国产数据库:tidb专题
  • 微信小程序 隐私协议弹窗授权
  • Git分支的强制回滚
  • 辽宁省工程系列信息通信管理专业职称评审标准
  • 国芯思辰| 高精度线性霍尔传感器AH693在角度位置传感器中的应用
  • 【机器学习】欠拟合、过拟合和正则化
  • ARM Linux远程调试
  • day 33简单的神经网络
  • Linux `wc` 命令深度解析与高阶应用指南
  • 计算机网络——Session、Cookie 和 Token
  • Bert预训练任务-MLM/NSP
  • 数仓SQL投影介绍
  • 小米2025年校招笔试真题手撕(一)
  • 基于企业数字化转型战略的数据治理方法论与顶层设计思路
  • 基于B/S架构的质量监督检验报告自动生成管理系统有何亮点?
  • Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览
  • Java使用Collections集合工具类
  • DAY 33 简单的神经网络
  • 软件设计师“面向对象设计”真题考点分析——求三连
  • 深入剖析 Doris 倒排索引(上):原理与应用全解析​
  • 腾讯2025年校招笔试真题手撕(三)
  • 嵌入式学习笔记 - 关于ARM编辑器compiler version 5 and compiler version 6
  • 软考高项考前48小时冲刺:核心考点记忆 + 错题复盘 + 3 科重点
  • 养生指南:五维提升健康品质
  • 基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS
  • Paimon和Hive相集成
  • Java基础 Day18
  • Redis 是否适合像 MySQL 一样当数据库使用?
  • 单一职责原则 (Single Responsibility Principle, SRP)