解题思路
算法类型:位掩码动态规划(状压 DP / TSP 最短路径变体)
题目要求无人机从基地 (0,0) 出发,把 n 个电力塔全部巡检一遍后结束,不需要返回基地,两塔之间按曼哈顿距离计算。n≤15,直接枚举巡检顺序不可行(O(n!)),而 2n 级别的状态量完全可行,因此用子集型 DP 求解「从固定起点出发、访问全部点、可在任意点结束」的最短路径。
设 dp[mask][i] 表示:已巡检的电力塔集合为 mask,且最后停在塔 i 时的最短总距离。转移时把 mask 之外的塔 j 加入末尾,代价为塔 i 到塔 j 的曼哈顿距离:
dp[mask∪{j}][j]=min(dp[mask∪{j}][j],dp[mask][i]+xi−xj+yi−yj)
题目内容
某电力公司使用无人机对 n 个电力塔进行巡检。每个电力塔 i 位于坐标 (xi,yi),无人机从基地(坐标 (0,0))出发,需要依次飞达每个电力塔完成巡检后结束任务,无需返回基地。
无人机同一时刻只能飞向一个电力塔,请规划巡检顺序,使无人机飞行的总距离最短(两个坐标点间按曼哈顿距离计算,即 ∣x1−x2∣+∣y1−y2∣),输出最短总距离。
输入描述
- n:电力塔数量,1≤n≤15
- xi,yi:第 i 个电力塔的坐标,0≤xi,yi≤200
输出描述
输出最短总距离(整数)
样例1
输入
3,[[1,2],[3,1],[2,3]]
输出
8
说明
3 个电力塔:A(1,2)、B(3,1)、C(2,3)。基地为 O(0,0)。
- 巡检顺序 A→C→B:O→A 距离 ∣1−0∣+∣2−0∣=3,A→C 距离 ∣1−2∣+∣2−3∣=2,C→B 距离 ∣2−3∣+∣3−1∣=3。总距离 3+2+3=8
- 巡检顺序 A→B→C:O→A 距离 3,A→B 距离 ∣1−3∣+∣2−1∣=3,B→C 距离 ∣3−2∣+∣1−3∣=3。总距离 9
- 巡检顺序 B→A→C:O→B 距离 4,B→A 距离 3,A→C 距离 2。总距离 9
其余顺序总距离均不小于 8,最短总距离为 8。
样例2
输入
2,[[1,1],[2,2]]
输出
4
说明
2 个电力塔:A(1,1)、B(2,2)。基地为 O(0,0)。
- 巡检顺序 A→B:O→A 距离 ∣0−1∣+∣0−1∣=2,A→B 距离 ∣1−2∣+∣1−2∣=2。总距离 2+2=4
- 巡检顺序 B→A:O→B 距离 ∣0−2∣+∣0−2∣=4,B→A 距离 ∣2−1∣+∣2−1∣=2。总距离 4+2=6
最短总距离为 4。