题目大意:
有N个村庄,其中要在不同的村庄里建M个邮局,求每个村庄到最近邮局的最小距离。
有如下4种情况:
①该村庄有邮局 距离为0
②该村庄在第一个邮局之前 距离为到第一个邮局的距离
③该村庄在两个邮局之间 距离为到最近村庄的距离
④该村庄在最后的邮局之后 距离为到最后的邮局的距离
题目分析:
这是道稍难的DP,就是之前做过的气象牛的弱化版(因为那道我还没做出来)
设F[i,j]表示当前放置到第i个村庄且第i个村庄有邮局,当前已经放置j个邮局的最优解。
当j=1时,很容易想到全部到一个那个有邮局的村庄。
当j>1时,可以想到如下图:
设当前选择的邮局位置为i,当前共选了j个邮局且上一个选的位置为k:
其中在第i个邮局放置之前的状态如下:
放置后,位置在i以后的村庄都转移到了第i个村庄,同时因为第i个村庄已经有了邮局,所以距离为0。
接下来在比较i和k之间的村庄,看看到那个邮局更近。
最后答案就是min(F[i,m]) (i≥m)