单调队列优化
泛化ψ(`∇´)ψ
这一类问题的常见特征是 1D1D, 也就是一维状态一维转移。
内层循环的取值范围由外层循环决定。
并且在外层循环变量固定 或者 单调变化的情况下,内层循环所枚举的决策集合是单调变化的。
不一定非的要头和尾增加(减少)的一模一样,只要保证经过的位置不会再被经过一次就好(甚至可以是头一直不动,尾一直增加)。
这时候,因为内层循环变量的取值区间单调变化,就可以利用单调队列的思想进行优化。
使用一个单调队列维护决策点的可能取值,并且保持队头是最优解,如果队头超过了限制,弹出,如果队尾新加入的元素比已经在队列里面的更加优秀,排除冗杂决策。
然后利用队头元素进行决策即可。
因为之前写的太烂了,我又比较懒,刚好被抓去当工具人的时候写过讲稿,所以就看看当时写的东西吧,比较基础,应该也很好理解。
等我弄清楚怎么内嵌就会放过来,这里只给出 link:
最后更新:
August 5, 2023