稀疏表

稀疏表(ST表)是一种数据结构,用于高效解决范围最大值查询问题。通过构造一个二维数组F[N][⌊log2N⌋+1],可以在O(nlog2n)时间内完成构建,并能在常数时间内查询范围最大值。文章介绍了ST表的构造过程和查询方法,并提供了C++实现代码示例。此外,还提到了该数据结构在洛谷P3865题目的应用。
摘要由CSDN通过智能技术生成

稀疏表

学习稀疏表:https://www.youtube.com/watch?v=c5O7E_PDO4U

稀疏表(Sparse Table),也叫ST表,用来解决范围最值查询(Range Minimum Query)问题。

假设有一个数组,我们需要对该数组执行如下操作(以下全部假设数组下标从0开始):

  • 求一个区间 [ l o w , h i g h ] [low,high] [low,high]内的最大值

不同的解决方法所花的时间不同:

解决方法 预处理时间 查询时间
普通数组 O ( 1 ) O(1) O(1) O ( n ) O(n) O(n)
动态规划 O ( n 2 ) O(n^{2}) O(n2) O ( 1 ) O(1) O(1)
线段树 O ( n ) O(n) O(n) O ( log ⁡ 2 n ) O(\log_{2}n) O(log2n)
稀疏表 O ( n log ⁡ 2 n ) O(n\log_{2}n) O(nlog2n) O ( 1 ) O(1) O(1)

因此,稀疏表在上面4种方式中是最好的。

构造稀疏表

假设数组的大小为 N N N

首先需要一个二维数组 F [ N ] [ ⌊ log ⁡ 2 N ⌋ + 1 ] F[N][\lfloor{\log_{2}N}\rfloor+1] F[N][log2N+1],其中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值