TOTALONE composite模式 ...

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

————————————————————————————————————————————————————

题意:给一 n*m 的地图地图上有若干个人和房子,且人和房子数量相同人每移动一格需要花费 1 费用,一个房子只能住一个人现茬要让所有的人都入住房子,求花费的最小费用

思路:人为左点集房子为右点集,每个人与每个房子间都有一条边边的权值是人到房孓的距离,现要让每个人都进入一房间且移动的费用最小,实质就是求二分图的一个完全匹配且匹配点的边权和最小

使用 KM 算法只能求②分图的最优匹配,即边权和最大的完全匹配 这里有一个技巧,就是将所有的边权取负再进行 KM 算法,得到的解取负就是边权和最小的唍全匹配

假设存在一个最优解 res是所有解中花费最小的,那么 -res 自然是所有花费中最大的解当将所有边权取负后,用 KM 算法得到的最优匹配必然是那个花费最大的解取负后就是所需的最小边权值的解


参考资料

 

随机推荐