RMQ(区间最值查询)入门知识
来源:互联网 发布:张大奕有几个淘宝店 编辑:程序博客网 时间:2024/06/03 15:57
1.RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。
2.
主要方法及复杂度如下:
1、朴素(即搜索),O(n)-O(qn) online。
2、线段树,O(n)-O(qlogn) online。
3、ST(实质是动态规划),O(nlogn)-O(q) online。
ST算法(Sparse Table),以求最大值为例,设d[i,j]表示[i,i+2^j-1]这个区间内的最大值,那么在询问到[a,b]区间的最大值时答案就是max(d[a,k], d[b-2^k+1,k]),其中k是满足2^k<=b-a+1(即长度)的最大的k,即k=[ln(b-a+1)/ln(2)]。
d的求法可以用动态规划,d[i, j]=max(d[i, j-1],d[i+2^(j-1), j-1])。
4、RMQ标准算法:先规约成LCA(Lowest Common Ancestor),再规约成约束RMQ,O(n)-O(q) online。
首先根据原数列,建立笛卡尔树,从而将问题在线性时间内规约为LCA问题。LCA问题可以在线性时间内规约为约束RMQ,也就是数列中任意两个相邻的数的差都是+1或-1的RMQ问题。约束RMQ有O(n)-O(1)的在线解法,故整个算法的时间复杂度为O(n)-O(1)。
0 0
- RMQ(区间最值查询)入门知识
- RMQ问题(区间最值查询)
- RMQ(快速查询区间最值)
- RMQ-区间最值查询
- RMQ(区间最值查询) NYOJ 119
- RMQ算法详解(区间最值查询)
- RMQ 区间最值查询算法
- 区间最值查询 --RMQ算法
- RMQ区间最值查询SparseTable算法
- RMQ静态区间最值查询
- hihoCoder 1068 : RMQ-ST算法 (区间最值查询之 rmq算法)
- 区间最值 RMQ
- RMQ(区间最值)
- rmq区间最值
- rmq(区间最值)
- RMQ的ST(区间最值)
- rmq问题(区间最值)
- RMQ算法 (区间最值问题)
- Linux网络编程之socket文件传输示例
- PHP用户登录功能实现
- hdoj1860
- 实习日记--20150721
- Quartz集群配置(一)
- RMQ(区间最值查询)入门知识
- Python 学习笔记一之模块探究学习
- JAVA模拟浏览器调用rest api接口
- Codeforces Round #303 (Div. 2)
- HDU 5294 Tricks Device(2015多校第一场 最短路 + 最小割)
- 【斯坦福---机器学习】复习笔记之最优间隔分类器
- (好文)Log4j输出格式控制--log4j的PatternLayout参数含义
- Cloudera Manager 安装时出现socker gaierror[error -2] name or service not know 或者could not contact scm ser
- JAVA 并发编程-传统线程互斥技术(Synchronized)(三)