题目链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805396953219072
题解
题目要求
加油站要离各个住宅的最小距离应该尽可能地大,但也要保证住宅在加油区的服务距离内。
现在给出几个加油站的候选位置,请你找出最好的一个(距离各住宅的最小距离最大)。如果有多个解,则选择离住宅平均距离最短的那个。如果还是有多个解,则选择索引较小的那个。
输入
- N:正整数,不超过1000,住宅的数量,住宅索引为[1,N]
- M:正整数,不超过10,加油站候选位置的数量,索引为[G1,GM]
- K:正整数,不超过10000,边的数量
- Ds:正整数,加油站的最大服务距离
- K条边
输出
加油站候选位置的索引
加油站与住宅的最短距离和平均距离
数字必须精确到小数点后一位。
解不存在则输出
No Solution
解题思路
除了输入输出需要懂点心思,这道题就是一道简单的单源最短路题目了。
- 这里有两类结点:住宅和加油站,可以对输入进行处理,规定索引[1,n]是住宅,索引[n+1,n+m]是加油站
- 然后对每个加油站运行dijkstra算法,在不超过加油站服务距离的前提下求解
- 注意是优先求距离各住宅的最小距离最大的解
代码
1 | // Problem: PAT Advanced 1072 |
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!