邮局问题

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

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

update 2024.6.25

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

update 2024.8.27

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

posted @   最爱丁珰  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示