【单调队列】单调队列不单调——噗

来源:互联网 发布:联想淘宝旗舰店靠谱吗 编辑:程序博客网 时间:2024/05/18 02:52

单调队列是这种东西——噗(泥垢)

考虑求解如下问题:data[i] = data[0 .. i - 1].select + F; 其中F与i无关; select一般指代min或者max,下文使用max来说明。

使用一般的方法我们需要O(n)的时间来求解每个data[i]的值,但是这个问题具有特殊性可以用来帮助我们优化。

data[i]是个上下文,获取data[i+1]的值时,比data[i]小的值不可能成为候选,所以我们可以依据data[i]的值断言一部分元素无效,从而将它们踢出查找过程。

假设这种操作在队列中完成,每个元素最多入队一次出队一次,所以复杂度是O(n)的。

这个东西经常用来优化动态规划。

0 0
原创粉丝点击