斜率优化 学习笔记
0x00 前言
对于形如
0x01 引入
有 n 个玩具,第
定义
因为
0x02 优化
先化简一下式子。令
考虑一次函数的表达式
显然可能成为最优点的集合一定构成下凸壳(读者自证不难),所以维护候选转移只需要维护凸包。
0x03 实现
可以发现此题切点左侧直线斜率都小于
若
若
0x04 应用
初级部分(一般的方程,直线单调)
BZOJ1597 [Usaco2008 Mar]土地购买
还是被困扰了一会。考虑先按
BZOJ1911 [Apio2010]特别行动队
BZOJ1010 [HNOI2008]玩具装箱
BZOJ1096 [ZJOI2007]仓库建设
BZOJ3437 小P的牧场
BZOJ3156 防御准备
BZOJ3675 [Apio2014]序列分割
BZOJ4518 [Sdoi2016]征途
HDU3507 Print Article
CF311B Cats Transport
高级部分(维护凸包需要二分/CDQ分治/平衡树)
BZOJ3672 [NOI2014]购票
BZOJ2726 [SDOI2012]任务安排
BZOJ1492 [NOI2007]货币兑换Cash
BZOJ3963 [WF2011]MachineWorks
BZOJ4700 适者
BZOJ2149 拆迁队
CF1083E The Fair Nut and Rectangles
0x05 总结
二分/CDQ/平衡树等能够优化 DP 方程的计算,于一定程度上降低复杂度,但不能改变这个方程本身。DP 方程的性质会取决于数据的特征,但 DP 方程本身取决于题目中的数学模型。
斜率优化 DP 需要灵活运用,其宗旨是将最优化问题转化为二维平面上与凸包有关的截距最值问题。遇到性质不太好的方程,有时需要辅以数据结构来加以解决,届时还请就题而论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现