DP优化技巧
感谢https://www.luogu.com.cn/user/249973#main老师。
DP优化技巧
矩阵优化DP
1.矩阵快速幂(优化dp)
2.四边形不等式优化dp(a,b,c,d)(ac+bd<=ad+bc)
3.数据结构优化dp(线段树)
4.单调队列、二分栈优化dp
5.斜率优化dp
矩阵定义
矩阵乘法(更常见),矩阵加法
矩阵加法
一般式:
其中
式子的含义为:矩阵
注意:矩阵加法满足交换律
矩阵乘法
一般式:
式子的含义为:矩阵
注意:矩阵乘法不满足交换律,满足结合律,满足分配率
前缀和优化dp
当转移遇到
求和式可以转换成
two-pointer优化dp
最常见的形式是“尺取法”。大概就是一个指针移动时,取最优值的另一个端点是单调移动的
我想在一个有序数组
当我们移动左端点
本质就是固定一端点,最优化地移动另一个端点
这样我们就能省去其中一维的枚举,达到优化的目的
决策单调性对一类 1D/1D DP的优化
这里的xD/yD Dp的含义,是指的状态数由
而决策单调性是指,对于两个决策点
根据
w(i,j)只包含i和j的项->单调队列优化
不妨将转移写成
因为
如果
w(i,j)只含有i,j和ij的项->斜率优化
不妨将转移写成
现在需要的就是对于每个i,找到最优决策点j.对于每个i,只和j有关的是变量.于是我们将原式变形
我们可以用线性规划来解决这个问题.用一次函数
现在我们需要
显然需要截距最大时,直线一定切于这些点的上凸包上,所以我们只需要维护一个上凸包即可
而如何在i不断枚举时,在不断有新的点加入的情况下去维护这一个上凸包呢?之前提出问题的时候已经说明了,
删除之后重复这个过程,直到不出现这个情况
而即使维护了这个上凸包,若还是利用遍历上凸包上的点来寻找最优决策点的话依旧是不可以的.如果我们能保证a[i]是单调递减,于是我们需要决策单调性优化,如果说i的最优决策点是j,那么显然任意取
并且对于最优决策点,记它和之前的一个点的斜率为k1,它和之后的一个决策点是k2,需要满足
综上,每个点都最多只会进出队列一次,复杂度
回到最初的问题,究竟哪些性质的
决策单调性适用的定理--四边形不等式与决策单调性
在解释斜率优化那部分的遗留问题之前,我们需要对决策单调性这一整部分进行归纳总结
四边形不等式:对于任意的
四边形不等式并不等同于代数形式的不等式,它只是一些w的二元函数具备的特殊性质
定理:若w(i,j)满足四边形不等式,那1D/1D DP是可以用决策单调性优化的.
证明:
以优化的第一类式子为例,即
设
同时,我们需要证明的式子是
把(2)式中的j变成
分情况讨论
1.
2.
(3)+(4)得
如果
综上
__EOF__

本文链接:https://www.cnblogs.com/gsczl71/p/17854558.html
关于博主:GDSZ初一蒟蒻,明年拿下七级勾
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:gsczl71,转载请注明原文链接:https://www.cnblogs.com/gsczl71/p/17854558.html
gsczl71 AK IOI!RP = INF 2024年拿下七级勾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】