2023.02.02

Posted Gemini7X の blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023.02.02相关的知识,希望对你有一定的参考价值。

决策单调性和凸优化

orz psj,orz pb orj csy

可惜这一天我在复习考试没看直播。

本文同时收录于【动态规划】一文。


参考

psj 的 apio 讲课,《决策单调性与四边形不等式》

p_b_p_b 的学习笔记。

csy 的讲课

oiwiki

slope trick


将 dp 抽象一下,给定一个向量 \\(f\\) 和一个矩阵 \\(A\\),考虑求出一个向量 \\(g_i=\\min_j(f_j+a_i,j)\\)

如果一个矩阵 \\(A\\) 的第 \\(i\\) 行的最小值的位置 \\(b_i\\) 是单调不减的就是单调矩阵。如果一个矩阵所有的子矩阵都是单调矩阵就称 \\(A\\) 是完全单调矩阵。

四边形不等式 \\(i\\le j,x\\le y\\)\\(A_i,x+A_j,y\\le A_i,y+A_j,x\\)。如果 \\(j=i+1,y=x+1\\) 满足四边形不等式,则 \\(A\\) 满足四变形不等式。满足四边形不等式的矩阵是蒙日矩阵。蒙日矩阵每一行或每一列加上一个常数 \\(C\\) 单调性不变。

由于蒙日矩阵一定是完全单调矩阵,所以dp方程有决策单调性

一般做法分治,假设当前分治区间是 \\([l,r]\\) 答案区间是 \\([x,y]\\) 考虑求出第 \\(mid=\\fracl+r2\\) 行的最小值的位置 \\(p\\),那么 \\([l,mid-1]\\) 的答案只能在 \\([x,p]\\) 取到,同理 \\([mid+1,r]\\) 的答案只能在 \\([p,y]\\) 取到,递归即可。

一般做法二分栈,对于任意两列,左边的列在一段前缀最优,右边的列在一段后缀更优。所以我们可以求出当前列第一个不如下一列的位置,这个二分求出。

NOI2009 诗人小G

直接列出转移方程 \\(dp_i=length(j,i)^p+dp_j\\),这个幂函数显然是凸的于是它有决策单调性于是直接二分栈即可。

loj6039 雅礼集训2017 Day5 珠宝

\\(C\\) 相同的物品分成一组,肯定是从大到小选,记方程 \\(f_i,j\\) 代表前 \\(i\\) 组选则总体积为 \\(j\\) 个的最大收益,转移可以写成 \\(f_i,j=\\max f_i-1,k+s_i,\\fracj-ki\\)。其中 \\(s_i,j-ki\\) 是前缀和。

那这个 \\(s_i,\\fracj-ki\\) 是单调的所以显然有决策单调性,按照模 \\(i\\) 个余数分类,然后直接分治即可。

CTT2018 ZYB的游览计划

分治做法的优势,在于如果矩阵元素不能 \\(O(1)\\) 计算的时候,如果可以快速扩展,用分治法类似莫队算法加入删除复杂度不变。而这一题只需要维护集合内的点的dfs序的顺序即可。

CF868F Yet Another Minimization Problem

和上一题近乎一样的做法。

SMAWK 算法,一个 \\(O(n)\\) 的做法,好像除了卡交互次数没什么出出来卡科技的必要,而省选NOI也不大可能出这种交互题,所以咕咕咕。

CF1423M Milutin\'s Plums

Wilber 算法,解决了 SMAWK 不能在线的问题。

Eppstein 算法,解决交错转移的问题。

二维的决策单调性问题

以上是关于2023.02.02的主要内容,如果未能解决你的问题,请参考以下文章