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

数据结构·ST表

ST表(Sparse Table)

可重复贡献问题

  • x o p t x = x x \ opt\ x = x x opt x=x :如果两个区间重复计算某些元素时,对重复元素进行 o p t opt opt操作没有任何影响

理解

ST表的思想是倍增,每一次处理上一次处理的两倍的元素,倍增的方式有重叠部分,如果重叠部分可重复贡献,则倍增的思路是正确的。

  • 长度:int len=log2(n),向下取整,避免出现无效元素参与计算
  • 构造时的递推公式:amax[j][m] = max(amax[j - 1][m], amax[j - 1][m + (1 << j - 1)]),例子:第3层第1个元素,由第2层第1,2,3个元素累积得到,其中第二个元素出现重复。
  • query:max(amax[len][l], amax[len][r - (1 << len) + 1]),首先查询当前层l处的元素,然后考虑当前层代表了 2 l e n 2^{len} 2len个元素,由第一层元素反推第len层元素。

模板

  • init()操作: O ( n l o g n ) O(nlogn) O(nlogn)复杂度
		int len = log2(n);for (int j = 1; j <= len; j++) {for (int m = 1; m <= n - (1 << j) + 1; m++) {amax[j][m] = max(amax[j - 1][m], amax[j - 1][m + (1 << j - 1)]);amin[j][m] = min(amin[j - 1][m], amin[j - 1][m + (1 << j - 1)]);}}
  • query()操作: O ( 1 ) O(1) O(1)仅仅支持静态查询,不支持任意修改方式
int query(int l,int r,int flag) {//flag==1 maxint len = log2(r - l + 1);if (flag)return max(amax[len][l], amax[len][r - (1 << len) + 1]);return min(amax[len][l], amax[len][r - (1 << len) + 1]);
}
  • 优化:log2操作比较费时,所以可以采用dp方式优化该运算。
lg[0]=-1;
for(int i=1;i<=n;i++)lg[i]=lg[i>>1]+1;

例题

http://www.dtcms.com/a/182489.html

相关文章:

  • Git 时光机:修改Commit信息
  • json格式不合法情况下,如何尽量保证数据可用性
  • 音频类网站或者资讯总结
  • 40、C# 数组、链表、哈希、队列、栈数据结构的特点、优点和缺点
  • Python生活手册-NumPy统计:从快递站到咖啡店的数字密码
  • 源码示例:使用SpringBoot+Vue+ElementUI+UniAPP技术组合开发一套小微企业ERP系统
  • Flask 调试的时候进入main函数两次
  • Python教程(四)——数据结构
  • 画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf
  • 常见音频主控芯片以及相关厂家总结
  • win10-启动django项目时报错
  • Go语言——goflow工作流使用
  • MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
  • 访问者模式(Visitor Pattern)详解
  • excel大表导入数据库
  • RAG 2.0 深入解读
  • OSPF不规则区域划分
  • 从代码学习深度学习 - 语义分割和数据集 PyTorch版
  • 部署RocketMQ
  • 垃圾对象回收
  • 2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业​​认证
  • 青藏高原东北部祁连山地区250m分辨率多年冻土空间分带指数图(2023)
  • [虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)
  • LeetCode热题100--240.搜索二维矩阵--中等
  • kotlin flow防抖
  • 聊一聊接口测试时如何处理接口或版本变更
  • 基于STM32的甲醛检测
  • Win10无法上网:Windows 无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目找不到域 TEST 的域控制器DNS 解析存在问题
  • Git简介和发展
  • LeakCanary