【学习笔记】DP 优化 3:闵可夫斯基和优化 DP
1.【学习笔记】Kruskal 重构树2.【学习笔记】网络流3.【学习笔记】高级数据结构4.【学习笔记】线性基5.【学习笔记】Link Cut Tree6.【学习笔记】字符串后缀算法7.【学习笔记】字符串回文算法8.【学习笔记】组合数学9.【学习笔记】多项式 1:基础操作10.【学习笔记】多项式 2:集合幂级数11.【学习笔记】多项式 3:多项式运算12.【学习笔记】Prufer 序列13.【学习笔记】多项式 4:生成函数14.【学习笔记】DP 套 DP15.【学习笔记】图的连通性16.【学习笔记】差分约束17.【学习笔记】长链剖分18.【学习笔记】2-SAT19.【学习笔记】根号算法20.【学习笔记】Primal-Dual 原始对偶算法21.【学习笔记】Bostan-Mori 算法22.【学习笔记】狄利克雷卷积与高级筛法23.【学习笔记】DP 优化 1:基础优化24.【学习笔记】DP 优化 2:动态 DP25.【学习笔记】李超线段树26.【学习笔记】优化建图27.【学习笔记】Segment Tree Beats28.【学习笔记】插头 DP29.【学习笔记】任意模数多项式乘法30.【学习笔记】SG 函数与 SG 定理31.【学习笔记】类欧几里得算法32.【学习笔记】狄利克雷前/后缀和/差分33.【学习笔记】DSU on Tree
34.【学习笔记】DP 优化 3:闵可夫斯基和优化 DP
35.【学习笔记】笛卡尔树36.【学习笔记】Miller-Rabin 算法37.【学习笔记】DP 优化 4:决策单调性38.【学习笔记】DP 优化 5:wqs 二分优化 DP39.【学习笔记】边分治40.【学习笔记】KMP 相关算法41.【学习笔记】概率生成函数42.【学习笔记】离散对数和剩余概述#
用于优化 卷积,形如:
要求 具有凸性。
算法流程#
以 为例,要求 形成上凸包,对 差分,那么 相当于在 和 中选两个前缀,要求长度和为 ,权值和最大。由于 和 都单调不升,那么归并排序之后选前 个数就是最优。
同理 要求 形成下凸包。
vector<int> Minkowski(vector<int> g,vector<int> h){
vector<int> f;
for(int i=(int)g.size()-1;i>=1;--i) g[i]-=g[i-1];
for(int i=(int)h.size()-1;i>=1;--i) h[i]-=h[i-1];
f.resize(g.size()+h.size());
merge(g.begin(),g.end(),h.begin(),h.end(),f.begin(),greater<int>());
for(int i=1;i<f.size();++i) f[i]+=f[i-1];
return f;
}
优化 DP#
通常与分治同时使用。
转移方程形如:
若 均具有凸性,可以使用闵可夫斯基和优化至 转移一行,改成分治求区间的 值,每一层的总规模 ,可以做到 。
例题#
QOJ-5421 Factories Once More#
考虑树上背包,设 为 子树内选 个节点的最大答案,转移是:
注意到贡献函数是上凸的,转移形如 卷积,因此得知 是上凸的,那么维护差分数组使用闵可夫斯基和优化。
需要启发式合并,维护单调不升的差分数组使用 Splay,而 差分后是等差数列,维护一个加等差数列的标记即可。
时间复杂度 。
参考资料#
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/Learning_Notes_about_DP_Optimization_3.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
合集:
学习笔记
分类:
A/学习笔记
, DP/DP 优化/闵可夫斯基和优化 DP
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效