数据结构-ST表】的更多相关文章

数据结构-ST表 不可修改,在线查询的 RMQ 问题. 其中 \(f[i][j]\) 表示 \(i\sim i+(1<<j)-1\) 这段的 RMQ 值. 时间复杂度 \(O(n\log n)\) #include <bits/stdc++.h> using namespace std; const int N=1e5+10; namespace ST{ class St{ public: int f[N][30]; }st; void build(St&t,int n,i…
SparseTable,俗称ST表,其功能,就是静态的RMQ(区间最值查询)问题的解决.注意传入查询的时候两个参数的合法性,或者可以进行一次全部初始化来使得越界值不产生负面影响.不过访问越界是写程序的不良习惯,不应该指望进行一次额外的初始化把它消除.再重申一次对任何位置的访问都要保证不越界.有一些加了某个值之后就会越界.既然是模板那就写多两行预防以后的问题吧(比如某个整除分块也有类似的隐藏bug).实际应用的时候可以删除提高性能. 时间复杂度: 初始化1:O(MAXN) 初始化2:O(nlogn…
ST表,听起来高大上,实际上限制非常多,仅仅可以求最值问题: 为什么?先从原理看起: st表运用了倍增的思想:st[i][j] = min(st[i][j - 1],st[i + 2^(j - 1))][j - 1]): 意义是:从i开始向后连续2^j个位置的最大值是,i开始向后连续2^(j-1)个位置的最大值和i+2^(j-1)开始向后连续2^(j-1)个位置的最大值: 好了,结构建立起来了,那么怎么查询呢? 一个公式:2^log(a)>a/2 . 所以说,查询(x,y)时我们设k=log(y…
区间最大值,$O(nlogn)$ 预处理,$O(1)$ 查询,不能动态修改.在查询次数M显著大于元素数量N的时候看得出差距. 令 $f[i][j]$ 表示 $[i,i+2^j-1]$ 的最大值. 显然, $f[i][0]=a[i]$ . 根据定义式,写出状态转移方程: $f[i][j]=max(f[i][j-1],f[i+2^{j-1}][j-1])$ . 我们可以这么理解:将区间 $[i,i+2^j-1]$ 分成相同的两部分 中点即为 $(i+(i+2^j-1))/2=i+2^{j-1}-1/…
WZJ的数据结构(三) 难度级别:B: 运行时间限制:3000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 请你设计一个数据结构,完成以下功能: 给定一个大小为N的整数组A,M次询问.每次询问给你i,j两个参数,求Ai至Aj中最大的数. 输入 第一行为两个正整数N,M.第二行为N个整数Ai.接下来M行为询问.  输出 对于每个询问输出答案.  输入示例 6 51 -2 3 4 -6 71 21 11 51 64 6 输出示例 11477 其他说明 1<=N<…
简介 ST 表是用于解决 可重复贡献问题 的数据结构. 什么是可重复贡献问题? ​ 可重复贡献问题 是指对于运算 \(\operatorname{opt}\) ,满足 \(x\operatorname{opt} x=x\) ,则对应的区间询问就是一个可重复贡献问题.例如,最大值有 \(\max(x,x)=x\) ,gcd 有 \(\operatorname{gcd}(x,x)=x\) ,所以 RMQ 和区间 GCD 就是一个可重复贡献问题.像区间和就不具有这个性质,如果求区间和的时候采用的预处理…
ST表 主要用来快速查询静态数据区间最大值 思路 数组\(A[i][j]\)存储数列\(\{a_i\}\)中区间\(i \in [i, i+2^j)\)的最大值 查询时只需要查询\(max\{A[i][k], A[j-2^k+1][k]\}\)即可,保证\(2\times2^k \geq j - i\)即可 预处理使用动态规划的思想 位运算勤加括号! 位运算勤加括号!! 位运算勤加括号!!! P3865 [模板]ST表 题目背景 这是一道ST表经典题--静态区间最大值 请注意最大数据时限只有0.…
ST表 这是一种神奇的数据结构,用nlogn的空间与nlongn的预处理得出O(1)的区间最大最小值(无修) 那么来看看这个核心数组:ST[][] ST[i][j]表示从i到i+(1<<j)的范围内的最大/最小值 那么来看看代码吧. #include <cstdio> #include <algorithm> using namespace std; ][],n; void makeST() { ;j<=;j++) { ;i+(<<j)-<=n;…
自学ST表笔记 说实话原先QBXT学的ST表忘的差不多了吧...... 我重新自学巩固一下(回忆一下) 顺便把原先一些思想来源的原博发上来 一.ST表简介 ST表,建表时间\(O(n\cdot logn)\),访问过程\(O(1)\) 的离线RMQ表. 思想标签:树性数据结构,倍增,预处理,离线. 然后这个建表最少需要\(S(n\cdot logn)\)的空间复杂度,然后如果需要预处理数字区间分块,另外需要一大批\(S(n)\)的空间. 听起来是不是很心动?(并没有 然后我们开始了解一下这个神奇…
传送门 BZOJ 4569 题解 ST表和并查集是我认为最优雅(其实是最好写--)的两个数据结构. 然鹅!他俩加一起的这道题,我却--没有做出来-- 咳咳. 正解是这样的: 类似ST表有\(\log n\)层一样,我们开\(\log n\)个并查集.当已知\([l_1, r_1]\)和\([l_2, r_2]\)相同的时候,设\(j = \lfloor \log (r_1 - l_1 + 1) \rfloor\),把\(l_1, l_2\)在\(j\)这层的并查集中合并,把\(r_1 - 2^j…