序列分块。设块长为 \(B\)。每块预处理出最大值。对于询问 \([l, r]\),答案就是整块最大值和散块最大值拼起来。答案显然是 \(O(n) \sim O(\dfrac{n}{B} + B)\)。这是普通分块。

我们预处理出每个散块的前缀最大值和后缀最大值。预处理线性。对于跨越两个块的询问就是 \(O(\dfrac{n}{B})\)。但是缺点是对于左右端点在一个块内的询问不好处理,复杂度为 \(O(B)\)。根号平衡后还是 \(O(n) \sim O(\sqrt n)\)。

我们开一个数组 \(m_{l, r}\),表示第 \(l\) 个块到第 \(r\) 个块中最大值的最大值。这个数组显然可以很容易的 \(O\left(\left(\dfrac{n}{B}\right)^2 \right)\) 求出。接下来我们预处理所有长度为 \(O(B)\) 的段的最大值。用单调队列也很容易做到 \(O(nB)\)。这样对于左右端点在同一个块内的询问,其长度一定小于 \(B\)。我们可以直接查表。对于跨越多个块的情况,可以查一下 \(m\) 数组。这样复杂度是 \(O\left(\left(\dfrac{n}{B}\right)^2 + nB + n\right) \sim O(1)\) 的。根号平衡一下发现当 \(B = n ^ {1 / 3}\) 的时候有最小值 \(O(n ^ {4 / 3}) \sim O(1)\)。

这似乎是根号算法的极限?

我们考虑 \(\log\) 算法。首先是众所周知的 ST 表。复杂度 \(O(n \log n) \sim O(1)\) ,全方位吊打分块TNT。

我们考虑优化这个算法。考虑分块。不妨还设块长为 \(B\)。散块还是求出前后缀的 \(\max\),整块之间做一下 ST 表。跨越多块的做法可以做到 \(O(\dfrac{n}{B} \log \dfrac{n}{B}) \sim O(1)\)。对于单块之间的询问我们沿袭上面分块的思路,直接预处理所有长度为 \(B\) 的区间的 \(\max\),这样就可以直接查表。所以复杂度就是 \(O(\dfrac{n}{B} \log \dfrac{n}{B} + nB) \sim O(1)\)。根号平衡一下发现当 \(B = \sqrt{\log n}\) 的时候就可以达到 \(O(n \sqrt{\log n}) \sim O(1)\)。这比传统意义上的 ST 表要快了。\(\color{red}{(1)}\)

考虑继续优化这个算法。我们发现瓶颈在处理左右端点在同一块内的答案。在每块内再做一遍 ST 表。这样就需要 \(O(\dfrac{n}{B} \times B \log B) = O(n \log B)\) 的时间。剩下的算法和原来一样。预处理就变成了 \(O(\dfrac{n}{B} \log \dfrac{n}{B} + n \log B)\) 了。我们让 \(B = \log n\) 的时候就已经做到了 \(O(n \log \log n) \sim O(1)\) 了。当然块长显然可以比这个优秀,但是我不会求了。\(\color{orange}{(2)}\)

这个做法不是很好。我认为做法 \(\color{red}{(1)}\) 虽然渐进复杂度更劣但是完全有实力吊打做法 \(\color{orange}{(2)}\)。

如何正确使用 RMQ的更多相关文章

  1. 奶牛排序——RMQ

    [问题描述]奶牛在熊大妈的带领下排成了一条直队.显然,不同的奶牛身高不一定相同……现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛 A 是最矮的,最右边的 B 是最高的,且 B 高于 A ...

  2. Noip模拟50 2021.9.10

    已经好长时间没有考试不挂分的良好体验了... T1 第零题 开场数据结构,真爽 对于这道题首先要理解对于一条链从上向下和从下向上走复活次数相等 (这可能需要晚上躺在被窝里面脑摸几种情况的样例) 然后就 ...

  3. HDU2459 后缀数组+RMQ

    题目大意: 在原串中找到一个拥有连续相同子串最多的那个子串 比如dababababc中的abababab有4个连续的ab,是最多的 如果有同样多的输出字典序最小的那个 这里用后缀数组解决问题: 枚举连 ...

  4. RMQ(ST算法)

    RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列a,回答若干询问RMQ(A,i,j)(i, j<=n),返回数列a中下标在i ...

  5. UVa 12299 RMQ with Shifts(移位RMQ)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...

  6. HDU 3183 A Magic Lamp(二维RMQ)

    第一种做法是贪心做法,只要前面的数比后面的大就把他删掉,这种做法是正确的,也比较好理解,这里就不说了,我比较想说一下ST算法,RMQ的应用 主要是返回数组的下标,RMQ要改成<=(这里是个坑点, ...

  7. 【算法】RMQ LCA 讲课杂记

    4月4日,应学弟要求去了次学校给小同学们讲了一堂课,其实讲的挺内容挺杂的,但是目的是引出LCA算法. 现在整理一下当天讲课的主要内容: 开始并没有直接引出LCA问题,而是讲了RMQ(Range Min ...

  8. 洛谷 P4137 Rmq Problem /mex 解题报告

    P4137 Rmq Problem /mex 题意 给一个长为\(n(\le 10^5)\)的数列\(\{a\}\),有\(m(\le 10^5)\)个询问,每次询问区间的\(mex\) 可以莫队然后 ...

  9. 【BZOJ4556】[Tjoi2016&Heoi2016]字符串 后缀数组+二分+主席树+RMQ

    [BZOJ4556][Tjoi2016&Heoi2016]字符串 Description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一 ...

  10. 【bzoj1067】[SCOI2007]降雨量 倍增RMQ

    题目描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003,2004和200 ...

随机推荐

  1. EF Core – 继承 Inheritance

    前言 继承是面向对象里的概念. 关系数据库只有一对一, 一对多这类关系, 并没有 "继承" 关系的概念. 所以 ORM (Object–relational mapping) 就需 ...

  2. Go runtime 调度器精讲(十一):总览全局

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面用了十讲介绍了 Go runtime 调度器,这一讲结合一些图在总览下 Go runtime 调度器. 1. 状态转换图 首先是 Gorou ...

  3. Windows NoiLinux

    在 Windows 下使用 NoiLinux ubuntu-noi-v2.0.iso 下载 ubuntu-noi-v2.0.iso 打开 VMWare,创建新的虚拟机 -> 自定义(高级)-&g ...

  4. 暑集假训SCP提高拟模21

    \[だから妄想感傷代償連盟 \] \[愛を懐いて理想を叫んだ \] \[行き場のない愚者のメロディー \] \[再挑戦•転生•テレポーテーション \] \[何回だって 重ねて逝くんだ \] \[終わり ...

  5. 第27天:安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞 - Shortcut

    https://www.kancloud.cn/manual/thinkphp5_1/354000 ThinkPHP-Vuln-master

  6. k8s的容器的webssh实现

    Vite2.x + Vue3.x + Xtermjs4 相关信息 编程语言:TypeScript 4.x + JavaScript 构建工具:Vite 2.x 前端框架:Vue 3.x 路由工具:Vu ...

  7. 北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态

    2023年9月21日,由IT运维网.<网络安全和信息化>杂志社联合主办的"2023(第十四届)IT运维大会"在北京成功举办.大会以"以数为基 智引未来&quo ...

  8. 形参和实参的区别 and 联系

    联系:形参和实参是赋值关系,是按照值传递的,简单数据直接传递值,形参和实参的改变互不影响,因为形参和实参是两个变量,是两个数据(栈内存): 引用数据传递的是地址,结果就是一个数据,两个地址同时指向一个 ...

  9. typeOrm 教程 创建链接数据库

    实体 User : import { Entity, PrimaryGeneratedColumn, Column } from "typeorm" @Entity() expor ...

  10. 大模型存储选型 & JuiceFS 在关键环节性能详解

    从去年开始,LLM大语言模型领域发展迅速.如 LLaMA.ChatGLM.Baichuan.Qwen 和 yi-model 等基础模型(Foundation Models)的数量显著增加.众多企业也开 ...