决策单调性
posted on 2024-05-18 07:30:18 | under | source
省去证明。
基础定义
-
四边形不等式定义
对于二元函数 \(w(a,b)\),若有 \(a\le b\le c\le d\) 均满足 \(w(a,c)+w(b,d)\le w(a,d)+w(b,c)\),则称 \(w\) 满足四边形不等式。(记为交叉优于包含)
-
一种等价定义
对于 \(a<a+1\le b<b+1\),均满足 \(w(a,b)+w(a+1,b+1)\le w(a,b+1)+w(a+1,b)\)。
-
包含单调性定义
\(a\le b\le c\le d\) 有 \(w(b,c)\le w(a,d)\)。
相关性质
方便证明的东西。
-
线性组合:\(w_1,w_2\) 均满足四边形不等式(或包含单调性),则 \(w=aw_1+bw_2\) 也满足四边形不等式(或包含单调性)。注意 \(a,b\ge 0\)。
-
相减形式:若 \(w(x,y)=f_y-g_x\),则 \(w\) 满足四边形不等式,大力展开就好。若 \(f,g\) 递增,则 \(w\) 还满足包含单调性。
-
复合函数:待补充。
决策单调性
下边都是 \(\min\),换成 \(\max\) 也行。
-
定义
令 \(f\) 是状态数组,\(opt\) 是 \(f\) 的转移数组,记录 \(f\) 从哪转移来。
若 \(opt\) 存在单调性(决策点递增、递减),就称 $$
-
1D型其1
?
\(f_i=\min\limits_{0\le j\le i} w(j,i)\)。
若 \(w\) 满足四边形不等式,则 \(f\) 满足决策单调性。
-
1D型其2
不限划分。
\(f_i=\min\limits_{0\le j<i} (f_j+w(j+1,i))\)。
同 1D 型,原因是 \(f\) 项会在过程中被消掉。
-
2D型其1
限定段数型划分。
\(f_{i,j} = \min\limits_{0\le k< j}(f_{i-1,k}+w(k+1,j))\)。
若 \(w\) 满足四边形不等式,则 \(f\) 满足决策单调性。其中 \(opt_{i-1,j}\le k\le opt_{i,j+1}\)。
-
2D型其2
石子合并型。
\(f_{i,j}=\min\limits_{i\le k\le j}(f_{i,k}+f_{k+1,j}+w(i,j))\)。
若 \(w\) 满足四边形不等式与包含单调性,则 \(f\) 满足决策单调性。其中 \(opt_{i,j-1}\le k\le opt_{i+1,j}\)。
-
函数图象法
适用于无法推导四边形不等式且斜率优化行不通的情况。
利用图象观察,记决策函数 \(g_j(i)\),那么决策单调性又等价于任意两函数交点至多一个。需要结合题目证明。
决策单调性实现方式
-
分治法
若 calc(l, r, kl, kr) 表示处理决策集合为 \([kl,kr]\) 时求 \([l,r]\) 的最优决策。
那么暴力算出区间中点 \(mid\) 的最优决策 \(k\),分治实现 calc(l, mid-1, kl, k) 和 calc(l, mid + 1, k, kr) 即可。
复杂度:考虑分治树上每一层,可以发现它们的决策区间都不相交(重合的 \(k\) 只会被其一计算),复杂度 \(O(n)\)。总复杂度 \(O(n\log n)\)。
-
贡献难算(莫队)
若贡献难算,但移动一端可以迅速得出结果时,仿照莫队在递归过程中移动端点即可。
本质是因为双指针被局限在决策区间内,而分治树满足一些优良性质:
-
\([l,r]\to [l,mid-1]\):至多移动 \(r-l+1\) 次,总复杂度 \(O(n\log n)\)。
-
\([l,mid-1]\to [mid+1,r]\):其实表述不太准确,应该是从 \([l,mid-1]\) 下面最后遍历的区间转移到 \([mid+1,r]\)。不过,肯定还是在 \([l,mid-1]\) 的范围里的。考虑同一层双指针不左移,总复杂度 \(O(n\log n)\)。
所以还是 \(O(n\log n)\)。
-
二分队列
若转移形如 \(f_j\to f_i,j<i\),即同一层内向一方向转移时,无法分治计算中点。
决策单调性直接推论:考虑每个点的统治范围,那么一个决策点的范围必定是一段连续区间,且互不相交。
考虑用三元组队列记下这些区间,从头到尾、决策点下标递增、区间在序列上从左到右。
按照下列方式维护:
-
检查队头右边界是否 \(<i\),是则弹出并继续检查。结束检查后,让队头左边界 \(=i\)(其实这句不加也行,猜测可以稍微优化复杂度?)。
-
取出队头,它就是 \(i\) 的最优决策。
-
取出队尾,若在其左边界下决策 \(i\) 仍然优于它,那么弹出队尾。
-
现在队尾统治区间的后面一部分要分给 \(i\),二分即可得出 \(pos\),满足 \([l,pos]\) 队尾优、\([pos+1,n]\) \(i\) 优。注意判断 \(pos+1\le n\)。
限定段数划分问题
-
定义
将区间 \([1,n]\) 恰好划分为 \(k\) 个小区间,且 \([l,r]\) 价值为 \(w(i,j)\),令代价最小化。
易得 dp:\(f_{i,j}\gets f_{k-1,j-1}+w(k,i)\)。
-
凸性
若 \(w\) 满足四边形不等式,将 \(f_n(k)\) 视为函数,则 \(f_n\) 是个凸函数(斜率单调)。于是可以使用 wqs 二分。证明去找 larsr 要。
-
共线的处理
为了处理共线的情况,必须在保证值最小的情况下划分的区间数最小或最大。以最小为例,记 \(num_i\) 为 \(f_i\) 取最小时,最小要划分多少个区间。那么 \(num\) 是不降的且邻项至多变化 \(1\)。
考虑归纳,将 \(num\) 视为若干段,那么记之前的段分别为 \(\dots k-2,k-1,k\)。反证法,假如从 \(\le k-2\) 的段转移过来了,则说明存在某个 \(f_x\) 在 \(\le k-2\) 段中,且值 \(\le f_y\),其中 \(y\) 在 \(k-1\) 段。由决策单调性,显然在 \(k\) 段时也会由 \(\le k-2\) 的部分转移过来,那么它就不可能是 \(k\),矛盾。
- 这玩意还是蛮有用的,如 IOI 那道外星人、以及邮局加强加强版。

浙公网安备 33010602011771号