P4767 [IOI2000] 邮局 加强版 题解 / 四边形不等式优化 DP 学习笔记

· · 题解

P4767 [IOI2000] 邮局 加强版

题目考察:四边形不等式优化动态规划。
题目简述:
在一条线上有 n 个村庄,现在要在 m 个村庄上建邮局,使所有村庄到他们最近的邮局的距离之和最小,求距离和。
形式化题意:
给你 \{a_n\},求:

\min_{1\le id_1<id_2<\dots<id_m\le n}(\sum_{i=1}^n \min_{j=1}^m(|a_i-a_{id_j}|))

数据范围:

综上,选第 \displaystyle\lfloor\frac{i+j}{2}\rfloor 个村庄是没有问题的。

这样时间复杂度是 \Theta(n^2(n+m)),T 飞了。

我们发现求 w_{i,j} 可以用前缀和实现,我们将小于中点和大于中点的村庄分开讨论,设 sum_i=\sum_{j=1}^ia_j(当然要排序),式子就变成了:

w_{i,j}=|a_{\lfloor\frac{i+j}{2}\rfloor}\times(\lfloor\frac{i+j}{2}\rfloor-i)-(sum_{\lfloor\frac{i+j}{2}\rfloor-1}-sum_{i-1})|+|(sum_j-sum_{\lfloor\frac{i+j}{2}\rfloor})-a_{\lfloor\frac{i+j}{2}\rfloor}\times (j-\lfloor\frac{i+j}{2}\rfloor)|

这样时间复杂度是 \Theta(n^2m),又 T 飞了。

正题开始

有一种 dp 叫四边形不等式优化动态规划。
证明 2:证明四边形不等式优化动态规划的正确性和时间复杂度:

  1. 四边形不等式的定义:
    f_{x,y} 是一个函数,对于所有的 a\le b\le c\le d,都满足 f_{a,d}+f_{b,c}\ge f_{a,c}+f_{b,d},则称其满足四边形不等式。
    特别地,若对于所有的 i<j,都有 f_{i,j+1}+f_{i+1,j}\ge f_{i,j}+f_{i+1,j+1},则能推出其满足四边形不等式。
  2. 证明 w_{i,j} 满足四边形不等式和单调性:
    • 证明四边形不等式:
      证明 w_{i,j+1}+w_{i+1,j}\ge w_{i,j}+w_{i+1,j+1},我们要分别分解。
      因为我懒,分解的式子就不写了,最终结果就是这样的: 注:图中省略了一些距离,但结果相同。
    • 证明单调性: 区间包含 w_{i+1,j}\le w_{i,j+1},显然成立。
  3. 证明 f_{i,j} 满足四边形不等式:
    因为 f_{i,1}=w_{1,i},所以当 j=1 时满足。
    而后面 f_{k,2}=f_{i,1}+w_{i+1,k},由于 f_{k,2} 是由两个满足四边形不等式的函数相加得到的,所以他必然也满足四边形不等式,其实是我又懒了
    以此类推。
  4. 证明决策单调性(d_{i,j-1}\le d_{i,j}\le d_{i+1,j}):
    我又懒了,感性理解就是建的邮局少了,最后的邮局就要往前建;距离远了,最后的邮局就要往后建。(不然就与最优矛盾了)
  5. 时间复杂度: $i=2$ 时,$k\in[d_{2,2},d_{3,3}]$。 ...... 长度累加等于 $p_{m+1,m}-p_{1,1}+n<2n-2

    故时间复杂度为 \Theta(n(n+m))

代码