今天我们来了解一下处理决策单调性的神器——二分栈。
ps:这种算法是单调队列的升级版,既是栈又是队列,就叫它二分单调双端队列吧
题目引入——JSOI2016 灯塔
对于每个 i i i,求解
max j ≤ i { a j + i − j } \max_{j \le i}\{a_j + \sqrt{i - j}\} j≤imax{ aj+i−j}
我们令 f j ( i ) = a j + i − j f_j(i) =a_j+\sqrt{i-j} fj(i)=aj+i−j, j j j 称为 i i i 的决策。设使 f j ( i ) f_j(i) fj(i) 取得最大值的 j j j 为 p i p_i pi,我们称 p i p_i pi 为 i i i 的最优决策。
单调性决策的发现
我们尝试对每一个最优决策 p i p_i pi 进行分析。
对于 q i ( 简称 q ) < p i ( 简称 p ) q_i(简称q) < p_i(简称p) qi(简称q)<pi(简称p)
有 f p ( i ) ≥ f q ( i )