RMQ
swqeaaa
有问题可以吻我
展开
-
POJ 3264 入门ST表
关于ST表: ST表是用来求RMQ问题的一种在线算法. 只能解决多次询问,没有修改的情况. 初始化复杂度O(nlogn), 查询O(1). ST表用了dp和倍增的思想: dp解决了每个位置往后1,2,4,8,16....长度的最大值是多少, 倍增解决了"已知每个位置往后1,2,4,8,16....长度的最大值, 得到任意区间最大值"的问题.我们具体来看: maxx[i][j]表示i为起点长...原创 2019-05-23 21:11:34 · 197 阅读 · 0 评论 -
POJ 3368 Frequent values RMQ
题意: 给出一个有序序列(1e5), 共1e5次查询, 每次查询给定区间内出现最多的数的出现次数. 思路: 一开始没有想到怎么用RMQ做. 因为RMQ处理的是区间最值, 而本题是区间的众数. 发现这个题由两个特殊之处: ①数列有序, ②答案只要求"多少次", 而不管"是什么", 那么, 我们就可以将不同的数分为不同的类, 每个类(sum数组)记录这类数出现了多少次, 另外a数组记录每个数是...原创 2019-07-13 17:02:47 · 157 阅读 · 0 评论 -
HDU 4123 Bob’s Race 树dp RMQ 尺取
题意: 每个点有编号, 点组成一棵树, 每个点求出树上的最远距离, 给出若干次询问, 问一个连续编号的区间, 满足最大值和最小值的差距<Q时, 区间的最大长度是多少. 思路: 树dp 与HDU 2196 Computer 相同的方法求出每个点的最长距离, 然后就与树无关了. 对于每一次询问, 尺取+RMQ得到满足条件的最长距离. 代码: #include <iostream&g...原创 2019-07-13 22:30:59 · 119 阅读 · 0 评论 -
HDU 3530 Subsequence 尺取 RMQ
题意: 给出一个数组, 长度为1e5, 1次询问, 给出一个上界R, 一个下界L, 问最大值减最小值差∈[L, R]的区间最长是多少. 思路: RMQ当然可以维护M-m, 但是因为对M-m有两个限制, 没有单调性就不能二分解决..只能用我不太熟悉的尺取了. 尺取的具体思路见代码: // a~b如果M-m>上界, a~c只会增大M, 减小m // 增大M...原创 2019-07-16 22:51:46 · 151 阅读 · 0 评论 -
2019 牛客 6 J D 思维 暴力
J 共个武器, 每个武器都能升m级, 给出一个n*m的矩阵c, 第i行第j列代表i武器从j-1升到j级的花费(可能为负), 又给出一个长度为m的数组, 第i个数代表如果每个武器都升到i级(或以上), 就能获得这个奖励(可能为负), 问最多能得到多少钱. 可以发现, 如果升不到j-1级就到不了j级, 换句话说, 升到j级肯定取了前面所有的花费, 奖励的数组也是同理, 所以, 这个矩阵和数组都可以...原创 2019-08-04 01:39:17 · 331 阅读 · 0 评论