动态规划(DP)——单调优化
形式
形如
的dp方程,
(f[x],g[x],w[x]分别为与x有关的不同式子)
(需保证f[x]满足单调性)
思路
如果,且,那么一定优于
维护单调队列使递减(队头优于队尾),优先选择队头元素,当队头元素超出范围后弹出。
实现
对于一个新的,如果大于队尾,一定更优,所以需要不停的将队尾不优的元素弹出tail--
,直到队尾大于,保证了队列的单调性。
然后计算,把队头超出范围的元素弹出head++
。
队头元素即为最优取值。
形如
如果,且,那么一定优于
维护单调队列使递减(队头优于队尾),优先选择队头元素,当队头元素超出范围后弹出。
对于一个新的,如果大于队尾,一定更优,所以需要不停的将队尾不优的元素弹出tail--
,直到队尾大于,保证了队列的单调性。
然后计算,把队头超出范围的元素弹出head++
。
队头元素即为最优取值。