DP 优化
今天模拟赛考到了斜率优化,我发现去年暑假听得一知半解的知识点现在要彻底搞懂了。
本文我学到哪写到哪。
决策单调性优化
有些状态
斜率优化
参考资料:https://oi-wiki.org/dp/opt/slope
P3195 [HNOI2008] 玩具装箱
题意
有
朴素 DP
容易推出:
前缀和优化
为了简化式子,构造函数
这个样子已经基本可以确定是斜率优化了。但是我们进一步化简:
斜率优化
我们要把转移方程转化成一次函数斜截式的形式。
考虑一次函数的斜截式
,将其移项得到 。我们将与 有关的信息表示为 的形式,把同时与 有关的信息表示为 ,把要最小化的信息(与 有关的信息)表示为 ,也就是截距。
设
原方程表示为
接下来,我们考虑几何意义。
图片来源于
发现要求截距最小。所以我们要找到合适的
我们每对一个
存在性质:
- 只有下凸壳的点可能作为转移点。
随 单调递增, 随 单调递增。
由性质得,可以用单调队列维护下凸壳(凸包上的转移点位置存在单调性)。
剩下的不必多说,这里偷懒放下
将初始状态入队。
每次使用一条和相关的直线 去切维护的凸包,找到最优决策,更新 。
加入状态。如果一个状态(即凸包上的一个点)在 加入后不再是凸包上的点,需要在 加入前将其剔除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架