和上上一篇独立开
分块
Minecraft Series(平衡复杂度)
https://www.luogu.com.cn/problem/CF1753F
莫队
参数要吉祥(莫队 + 队列)
https://www.luogu.com.cn/problem/P12598
给定 \(\{a\}\) 和 \(q\) 个询问,每次问 \([l,r]\) 中 \(c(x)\times a_x\) 的最大值。其中 \(c(x)\) 为『出现次数为 \(x\) 的数』的种类。
莫队结合队列,每次更新一个数的 \(cnt\) 时,如果这个数没出现过就加入队列。查询的时候把队列过一遍,删除非最新版本的数据。队列长度和移动次数是一样的。
考虑询问的复杂度,对于长度为 \(len\) 的区间,\(\ge \sqrt{len}\) 的 \(cnt\) 出现次数不超过 \(\sqrt {len}\);\(\le \sqrt{len}\) 的 \(cnt\) 出现次数更不会超过 \(len\)。过一遍队列就是 \(O(\sqrt {len})\) 的。