刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

办事处选址

编程实现:

现将某区域的地图变成一个平面的方格图,平面上有n处居民住宅,已知n处居民住宅,每处居民住宅位置所处的行数和列数,现计划设置一处便民办事处,使办事处去到各个住宅位置的距离之和最短(只能上下左右走,且办事处可以和住宅处在同一个方格),请问最短距离之和是多少?

例如:共有两处居民住宅,位置如下图:

第一处居民住宅在0行0列,第二处居民住宅在0行1列,那么办事处可设置在0行0列处,到第一处居民住宅的距离为0,到第二处居民住宅的距离为1,最短距离之和为1。

输入描述

第一行输入一个正整数n,表示有n处居民住宅(1≤n≤10000)。

第二行往后n行,每一行输入一对数字,表示每处居民住宅的行数和列数(0≤行数<100,0≤列数<100),中间用空格隔开。

输出描述

输出最短距离之和。


输入样例

2
0 0
0 1

输出样例

1

使用微信搜索喵呜刷题,轻松应对考试!

答案:

根据题目描述,我们需要计算办事处到各个住宅位置的距离之和。可以使用Floyd-Warshall算法来求解。首先,我们需要将地图转换成邻接矩阵,表示任意两个住宅之间的距离。由于办事处只能上下左右走,所以从一个住宅到另一个住宅的距离就是它们之间的曼哈顿距离。然后,我们可以使用Floyd-Warshall算法来求解任意两个点之间的最短路径。这个算法的时间复杂度是O(n^3),其中n是住宅的数量。最后,我们只需要计算办事处到每个住宅的最短距离,然后将它们相加即可得到最短距离之和。

解析:

【喵呜刷题小喵解析】:
本题是一道经典的图论问题,可以使用Floyd-Warshall算法来求解。由于办事处只能上下左右走,所以从一个住宅到另一个住宅的距离就是它们之间的曼哈顿距离。我们可以将地图转换成邻接矩阵,表示任意两个住宅之间的距离。然后,使用Floyd-Warshall算法来求解任意两个点之间的最短路径。最后,计算办事处到每个住宅的最短距离,将它们相加即可得到最短距离之和。需要注意的是,由于Floyd-Warshall算法的时间复杂度是O(n^3),当n较大时,可能需要较长的时间来计算。因此,在实际应用中,可能需要考虑使用其他算法来优化求解过程。
创作类型:
原创

本文链接:办事处选址 编程实现: 现将某区域的地图变成一个平面的方格图,平面上有n处居民住宅,已知n处居民住宅

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share