四边形不等式相关
四边形不等式
我们称一个二元函数 \(w(i, j)\) 满足四边形不等式,当且仅当对于任意 \(a \le b \le c \le d\) 满足:
即交叉小于包含。
其可以用来对转移进行优化,具体的,设:
定义 \(\operatorname{opt}(i)\) 表示计算 \(f(i)\) 时最优的那个决策点 \(j\),称其满足决策单调性当且仅当对于任意 \(i < j\) 满足 \(\operatorname{opt}(i) \le \operatorname{opt}(j)\)。
性质 \(1\):
若 \(w(i, j)\) 满足四边形不等式,则 \(f(i)\) 满足决策单调性。
考虑反证法,若存在 \(i < j\) 且 \(x = \operatorname{opt}(i) > y = \operatorname{opt}(j)\),那么根据定义有 \(w(x, j) \ge w(y, j), w(y, i) \ge w(x, i)\),于是 \(w(x, j) + w(y, i) \ge w(y, j) + w(x, i)\),违反了四边形不等式,于是得证。
性质 \(2\):
如果对于任意 \(i, j\) 满足 \(w(i, j) + w(i + 1, j + 1) \le w(i, j + 1) + w(i + 1, j)\),那么 \(w\) 满足四边形不等式。
证明比较显然,考虑 \(w(i + 1, j) + w(i, j + 1) - w(i, j) - w(i + 1, j + 1) \ge 0\),这表示 \(w\) 的二维差分矩阵非负;于是考察其二维差分矩阵上一个子矩阵 \((b + 1, d + 1), (a, c)\) 的和必然也非负,即 \(w(a, d) - w(a, c) - w(b, d) + w(b, c) \ge 0\),这是四边形不等式的定义。
上面那个决策单调性太特殊了,只对 \(f(i) = \min w(j, i)\) 生效,感觉没有什么实际用途,一般都是这种问题:将序列分段使得权值最小,即:
这种怎么办?考虑:
性质 \(3\):
若 \(w(i, j)\) 满足四边形不等式,则 \(w(i, j) = x_i + y_j\) 也满足。
这是显然的,带入进去把 \(x, y\) 都消掉了。
于是只需要 \(w(i, j)\) 满足四边形不等式,则上面 \(f(i)\) 的转移也满足决策单调性。
如果强制钦定了要分 \(k\) 段,可以根据情况使用 wqs 二分或者多加一维解决。
考虑 \(w(l, r)\) 可能是 \(\sum_{l \le i \le j \le r} c(i, j)\) 的形式:
性质 \(4\):
若 \(c(i, j) \ge 0\),则 \(w(l, r) = \sum_{l \le i \le j \le r} c(i, j)\) 满足四边形不等式。
考虑证明 \(w(x, y) + w(x + 1, y + 1) \le w(x, y + 1) + w(x + 1, y)\),考虑拆贡献 \(x + 1 \le i \le j \le y\) 的 \((i, j)\) 对两边贡献是相同的,然后左边是 \(\sum_{i = x, j \in [x, y]} c_{i, j} + \sum_{i \in [x + 1, y + 1], j = y + 1} c_{i, j}\),然后右边 \(w(x, y + 1)\) 去掉 \(x + 1 \le i \le j \le y\) 的 \((i, j)\) 后是 \(\sum_{i = x,j \in [x, y + 1]} c(i, j) + \sum_{i \in [x, y + 1], j = y + 1} c(i, j)\),于是右边多考虑了 \(c(x, y + 1)\),得证。
例题
P1880 [NOI1995] 石子合并
考虑区间 dp,定义 \(dp(l, r)\) 表示将区间 \([l, r]\) 合并的最小代价,于是有转移:
钦定 \(l\) 固定时,有 \(w(i, j) = dp(l, i) + dp(i + 1, j)\) ,考虑证明 \(w(i, j)\) 满足四边形不等式,你推下式子发现等价于证明 \(dp(i, j)\) 满足四边形不等式。
这里 \(dp(i, j)\) 满足四边形不等式的充要条件是 \(h(i, j) = s_i - s_{j - 1}\) 也满足四边形不等式且满足区间包含单调性,可以对长度数学归纳发得到。
然后你发现上面固定右端点 \(r\) 时也有决策单调性,于是有 \(\operatorname{opt}(l, r) \in [\operatorname{opt}(l, r - 1), \operatorname{opt}(l + 1, r)]\),所以这样枚举决策点时间复杂度就是 \(O(n^2)\) 的。
于是可以得到性质 \(5\):
设 \(w(l, r)\) 满足四边形不等式且满足区间包含单调性,若 \(dp(l, r) = w(l, r) + \min\limits_{k = l}^{r - 1} (dp(l, k) + dp(k + 1, r))\),那么 \(dp(l, r)\) 也满足四边形不等式;且固定 \(l\) 或者固定 \(r\) 时都满足决策单调性,即 \(\operatorname{opt}(l, r) \in [\operatorname{opt}(l, r - 1), \operatorname{opt}(l + 1, r)]\)。
类似题目 UVA10304 Optimal Binary Search Tree。
CF868F Yet Another Minimization Problem
考虑 \(c(i, j) = [a_i = a_j]\),那么 \(w(l, r) = \sum_{l \le i \le j \le r} c(i, j)\) 满足四边形不等式,于是 \(dp\) 时:
这个最优决策 \(k\) 具有单调性;考虑用分治与整体二分的思想解决。
即我们定义 \(solve(l, r, kl, kr)\) 表示目前在转移 \([l, r]\) 内的点,其最优决策点在 \([kl, kr]\) 内;那么可以暴力算出 \(mid\) 的最优决策点 \(kmid\),然后递归到 \(solve(l, mid - 1, kl, kmid), solvew(mid + 1, r, kmid, kr)\);显然递归层数使用 \(\log n\) 层,且每层 \([kl, kr]\) 的总长度是 \(O(n)\) 级别的,于是单次时间复杂度是 \(O(n \log n)\)。
现在问题在于如何快速算 \(w(l, r)\),你考虑用类似莫队的走指针方式解决,你发现每次移动的长度是 \(O(len)\) 级别的,于是最终是 \(O(n \log n)\) 次。
总时间复杂度为 \(O(nk \log n)\)。
P3515 [POI 2011] Lightning Conductor
这题你推一下式子,若对于 \(i\) 的答案是 \(k\),那么要对于所有 \(j\) 满足:
于是:
考虑怎么算 \(h_j + \sqrt{|i - j|}\),这里分讨 \(j < i\) 和 \(j > i\) 两种情况算就可以去掉绝对值,然后 \(w(i, j) = \sqrt{i - j}\),容易发现 \(w\) 满足四边形不等式,于是有决策单调性。
于是分治解决即可,时间复杂度为 \(O(n \log n)\)。
P4767 [IOI 2000] 邮局 加强版
显然对于每个设立的邮局,到其距离最近的村庄集合是集合,于是可以设立状态 \(dp_{i, j}\) 表示考虑前 \(i\) 个村庄放了 \(j\) 个邮局的最小代价:
其中 \(w(l, r)\) 表示在区间 \([l, r]\) 内放一个邮局的最小代价,显然将邮局放在中位数位置最优,于是可以增量递推:
你发现 \(w\) 满足四边形不等式,于是我们按照 \(j\) 分层每层分治计算即可,时间复杂度为 \(O(nk \log n)\).
这里证明一下上面的 \(w\) 满足四边形不等式,即 \(w(i, j) + w(i + 1, j + 1) \le w(i, j + 1) + w(i + 1, j)\);首先注意到 \([i, j + 1]\) 与 \([i + 1, j]\) 的中位数一样,设为 \(k\);
那么 \(w(i, j + 1) = w(i + 1, j) + a_k - a_i + a_{j + 1} - a_k = w(i + 1, j) + a_{j + 1} - a_i\),于是 \(w(i, j + 1) + w(i + 1, j) = 2w(i + 1, j) + a_{j + 1} - a_i\)。
然后根据 \(w\) 的最小性的定义,可以得到 \(w(i, j) \le w(i + 1, j) + a_k - a_i, w(i + 1, j + 1) \le w(i + 1, j) + a_{j + 1} - a_k\),于是 \(w(i, j) + w(i + 1, j + 1) \le 2w(i + 1, j) + a_{j + 1} - a_i = w(i, j + 1) + w(i + 1, j)\) 得证。
P10861 [HBCPC2024] MACARON Likes Happy Endings
令 \(s\) 为前缀异或,那么 \(c(i, j) = [s_j \oplus s_{i - 1} = d] \ge 0\),于是 \(w(l, r) = \sum_{l \le i \le j \le r}\) 满足四边形不等式,于是 \(dp\) 时:
然后分治去做,计算 \(w(k, i)\) 可以简单走指针计算,于是时间复杂度是 \(O(nk \log n)\) 的。

浙公网安备 33010602011771号