邮局问题

这个DP方法一定不会遗漏最优解

我们假设最优解中,第\(j\)个邮局管辖的村庄集合是\(S\),那么以\(S\)中横坐标最小的村庄为分界点,这个分界点一定会被枚举到的,而且由于这个方案是最优解,如果我们把第\(j\)个邮局放在中位数那里,其他村庄的管辖是不会变的(否则就不是最优解了)

update 2024.6.25

上面这个递推公式解释一下:假设我们已经求出\(sum[i][j-1]\)了,那么我们分类讨论一下,如果\(j-i\)是奇数,那么此时对\([i,j-1]\)这些村庄来说,邮局是在唯一的中点的,所以对于\([i,j]\)来说,我们只用加上新加入的一个村庄到这个终点的距离就好了,也就是\(p[j]-p[(i+j)/2]\);如果\(j-i\)是偶数,那么此时对\([i,j-1]\)这些村庄来说,邮局可以在两个中点之间的任何一个点,不妨设在两个中点中坐标更大的一个点,于是就可以直接加上\(p[j]-p[(i+j)/2]\)就好了

update 2024.8.27

解决这个问题的一般做法是对顶堆,但是像这样给出的数都是单调递增的,我们就可以这样\(O(1)\)递推

posted @ 2024-01-26 23:30  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报