S(i)为村庄 i 到原点的距离。
w(i,j)=min{k|Sum{|S(k)-S(p)|}(i=p=j)}(i=k=j)找到[i,j]间最好的一
个邮局点。
不过可以发现 Sum{|S(k)-S(p)|是单调的,所以取中位数就可以了。即上
式中 k 的取值范围只有 floor((i+j)/2),ceil((i+j)/2)两个。Floor 是下取
整。Ceil 是上取整。这样每次转移时间降到 O(1)。
注意到是区间连续的,即(p,i-1)和(i,j)中的 i-1,i 是连续的,所以空间
可以降维:f(i,j)表示放前 i 个邮局到前 j 个村庄的最优值。
f(i,j)=min{f(i-1,p-1)+w(p,j)}(i-1=p=j-1}
e(i,j)为当 f(i,j)到达最优值时的 p.
通过证明四边形不等式,得到 e(i,j)=e(i,j+1)=e(i+1,j+1)
决策数量又少了一个数量级。
1.3.坐标动态规划共性总结
之后的一些问题,状态是由坐标维与其他的维组成。本类与划分问题(是
2 维或多维的坐标系的划分)与路径问题的交集占本类问题中大多数。
题库
a)棋盘分割(NOI99 4)
主要是将公式变形,变形后的公式很容易看出方程。
状态是由 2 个坐标组成的 4 元组(x1,y1)(x2,y2),表示一个子棋盘。这有
点像之前的区间动态规划,只不过是将 1 维转 2 维。
后见路径问题。
1.4.数轴动态规划共性总结