决策单调性

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)\)

相关性质

方便证明的东西。

  1. 线性组合:\(w_1,w_2\) 均满足四边形不等式(或包含单调性),则 \(w=aw_1+bw_2\) 也满足四边形不等式(或包含单调性)。注意 \(a,b\ge 0\)

  2. 相减形式:若 \(w(x,y)=f_y-g_x\),则 \(w\) 满足四边形不等式,大力展开就好。若 \(f,g\) 递增,则 \(w\) 还满足包含单调性。

  3. 复合函数:待补充。

决策单调性

下边都是 \(\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)\)

  • 贡献难算(莫队)

若贡献难算,但移动一端可以迅速得出结果时,仿照莫队在递归过程中移动端点即可。

本质是因为双指针被局限在决策区间内,而分治树满足一些优良性质:

  1. \([l,r]\to [l,mid-1]\):至多移动 \(r-l+1\) 次,总复杂度 \(O(n\log n)\)

  2. \([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\),即同一层内向一方向转移时,无法分治计算中点。

决策单调性直接推论:考虑每个点的统治范围,那么一个决策点的范围必定是一段连续区间,且互不相交。

考虑用三元组队列记下这些区间,从头到尾、决策点下标递增、区间在序列上从左到右。

按照下列方式维护:

  1. 检查队头右边界是否 \(<i\),是则弹出并继续检查。结束检查后,让队头左边界 \(=i\)(其实这句不加也行,猜测可以稍微优化复杂度?)。

  2. 取出队头,它就是 \(i\) 的最优决策。

  3. 取出队尾,若在其左边界下决策 \(i\) 仍然优于它,那么弹出队尾。

  4. 现在队尾统治区间的后面一部分要分给 \(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 那道外星人、以及邮局加强加强版。
posted @ 2026-01-14 18:03  Zwi  阅读(3)  评论(0)    收藏  举报