试题 历届真题 补给【第十一届】【决赛】【B组】
资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
旅行商的变种题,区别在于经历过的地点还可以过去,所以动态转移方程为:
dp[i][state] 是指 从i出发,经历state 的状态再回到0 的最短距离
dp[i][state]=min(dp[j][sub]+diji(i,j)) if state&(1<<j) !=0 也就是说 中间中转站 得是已经经过的地方
其中,sub 是 (1<<j)^state ,也就是上层遍历时,其他地点都去了唯独没去 j 的情况
diji(i,j) 是用迪基求i到j的最短距离。
Python真的离谱, 跑啥都跑不过去