环上邮局 / 环上决策单调性
邮局 是决策单调性优化 dp 的经典应用,其属于限制段数的序列划分问题,可以通过二分队列 + wqs 二分的方式做到
顾名思义,环上邮局是将邮局问题搬到了环上,我们可以用其代表一类环上限制段数的划分问题,虽然我其实几乎没有见过有人出这种东西。
形式化的,环上邮局指的是如下问题:
有
个点排成一个环,点按顺序编号为 。有 个人,第 个人在点 上。现在需要选择恰好 个关键点,使得所有人到离自己最近的关键点的距离之和最小。
环上问题是难以直接解决的,我们考虑断环为链。但是选取某个位置断环为链也就意味着钦定划分出一个以该位置开头的区间,这并不一定是优的。一种暴力的想法是,枚举断环为链的位置,然后每次跑一遍序列邮局,这样做的复杂度是
考虑我们在序列上使用的决策单调性搬到环上后有什么性质。
假设我们选取两个不同的起点断环为链,求出了两组最优划分方案 Part 1 和 Part 2,那么有结论:Part 1 划分出的每个区间内恰有一个 Part 2 的分割点。这一结论可以简称为「路径交错」。
如果知道如何证明序列上的决策单调性,上述性质是非常符合直觉的,证明也不困难。
考虑反证。若存在 Part 1 的区间内有
使用惯用的方法,将两组互为包含关系的区间替换成交叉形式,并且重新组合 Part 1 和 Part 2 的剩余部分得到 Part 3 和 Part 4。由于我们做了两次不劣的替换,所以 Part 3 和 Part 4 的总代价要优于 Part 1 和 Part 2(相等的情况平凡), 但是由于 Part 1 和 Part 2 分别是对应起点的最优划分,它们的总代价又应当优于 Part 3 和 Part 4。这就推导出了矛盾。
上面的证明和序列形式使用了基本一致的方法,可以参考 序列形式的证明 辅助理解。
得到路径交错后,首先有一种简单的优化:考虑先任取起点求一组最优划分,然后找到划分出的最短的区间,其长度应当为
考虑如何更进一步。任取两个起点求得最优划分 Part 1 和 Part 2。Part 1 的每个区间内恰有一个 Part 2 的分割点,这些分割点将 Part 1 的区间分成了「左部」和「右部」。接下来若在左部选取一个起点求最优划分,容易发现所有分割点都应当落在左部,对右部而言也同理。这样即可进行分治,每个子问题都可以分层转移,每层用分治或二分队列维护,复杂度依赖这个子问题的候选决策点数量。分治中每层的所有子问题的候选决策点数量之和是
例题:
- NFLSOJ 约会(环上邮局)
- LG6455 不可视境界线 [环版本](环上 LG5617)
一个细节是,在第一步任求一组最优划分时我们需要构造一组恰好划分
一种确定性的构造方法是,在凸包上定位到
代码没写。
Reference
本作品采用 知识共享署名 - 非商业性使用 - 相同方式共享 4.0 国际许可协议 进行许可。