RMQ小结

RMQ——区间最小查询,实际情况往往不是查询最小值,而是查询区间特定信息。一般要求在logn的级别实现查询or修改。

RMQ三种实现

1.BIT

BIT给我的感觉就是神迹一般数学的巧合,关于它的原理就不作解释了。

BIT的实现十分简单,但是要支持高级的功能的话,思考的复杂度会很高。

2.线段树

思考比较直观,顶多是通过花样维护区间信息来支持更多高级功能,但是比起BIT的话实现难度稍高。

3.分桶法

结构比较特殊,对付一些特别的问题会比较方便。

时间: 2024-10-05 16:48:26

RMQ小结的相关文章

数据结构专题小结:RMQ问题

RMQ问题 范围最小值问题(Range Minimum Query)是指:给定一个n个元素的数组A[1],A[2]...A[n].设计一个数据结构,支持查询操作Query(L,R):计算min{A[L],A[L+1]...A[R]}. 该问题在实践中常用Tarjan的Sparse-Table算法.它的预处理时间是O(N*logN),但查询只需要O(1),而且常数非常小.最重要的是,这个算法非常好写,而且不易写错. (1)原理:该算法利用了分治法的思想,令d(i,j)表示从i开始的,长度为2^j的

线段树入门小结

QUE:线段树? 称谓: 从刘汝佳的书中得知,"这种数据结构在学术界没有统一的术语,但线段树是最常见的叫法.其他叫法包括区间树(interval tree).范围树(range tree)等,但这些属于在特定的场合(如计算几何)中有着特殊的意义".怎么叫看读者的心情,以下统一用线段树称呼. 先来作一些了解: 线段树是一棵二叉树,它的左右儿子也都是一棵线段树.(定义) 线段树也叫区间树,为什么叫它区间树呢?因为线段树是一种基于区间的数据结构. 线段树的每个节点代表一个区间 [L,R],其

RMQ 问题之Sparse_Table算法

RMQ问题,全名(Range Minimum/Maximum Query),是求给定区间中的最值问题. 主要方法及复杂度如下: 1.朴素(即搜索),O(n)-O(qn) online. 2.线段树,O(n)-O(qlogn) online. 3.Sparse_Table(实质是动态规划),O(nlogn)-O(1) online. 4.RMQ标准算法:先规约成LCA(Lowest Common Ancestor),再规约成约束RMQ,O(n)-O(1) online. 昨天刚刚学了第三种,ST算

浅谈-RMQ

浅谈RMQ Today,我get到了一个新算法,开心....RMQ. RMQ(Range Minimum/Maximum Query),意思是对于一段区间,查询最大值或最小值的一种数据结构.首先,我们很容易想到线段树,时空复杂度均为O(nlogn),但是RMQ的优越之处就在于它查询是O(1)的. 首先,我们先说一下RMQ的大体思想.用动态规划的想法来预处理出一些强大的式子.我们定义f[i][j],这是RMQ算法最核心的地方,关于f数组的定义.我们容易想到是i到j之间的最小值,但是在转移或者是处理

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

dutacm.club 1094: 等差区间(RMQ区间最大、最小值,区间GCD)

1094: 等差区间 Time Limit:5000/3000 MS (Java/Others)   Memory Limit:163840/131072 KB (Java/Others)Total Submissions:655   Accepted:54 [Submit][Status][Discuss] Description 已知一个长度为 n 的数组 a[1],a[2],-,a[n],我们进行 q 次询问,每次询问区间 a[l],a[l+1],-,a[r?1],a[r] ,数字从小到大

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO

RMQ问题再临

RMQ问题再临 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 终于,小Hi和小Ho踏上了回国的旅程.在飞机上,望着采购来的特产——小Hi陷入了沉思:还记得在上上周他们去超市的时候,前前后后挑了那么多的东西,都幸运的没有任何其他人(售货员/其他顾客)来打搅他们的采购过程.但是如果发生了这样的事情,他们的采购又会变得如何呢? 于是小Hi便向小Ho提出了这个问题:假设整个货架上从左到右摆放了N种商品,并且依次标号为1到N,每次小Hi都给出一段区间[L, R],小Ho要做

[bzoj3489]A simple rmq problem

本题既不是rmq也不会simple(对我这种蒟蒻而言) 一开始只能想到树套树套树TAT然后看了看数据范围果断滚去膜拜题解. 然后才知道预先排序一下可以弄掉一个log.不过得写可持久化线段树套可持久化线段树.. 然后愉悦的开码了...感人的是竟然不用调...更感人的是交上去直接tle了. 然后从网上找了别人的代码(方法一样)发现同样的数据我要跑6s+..标称只要2s+.. 之后各种卡常还是慢了一倍TAT...最后自己写个max函数就和标程一样快了TAT这几天怎么总是出些奇怪的状况QAQ. 本来故事