链接:https://www.nowcoder.com/acm/contest/143/E
n个宿舍,每个宿舍住4个人,给两年的住宿情况,问最少调换多少人,能从前一年的住宿状态调换到后一年的住宿状态(宿舍顺序不影响)。
比赛的时候没时间看,补题的时候发现是一道挺好想的费用流问题。
考虑宿舍整体,当一个宿舍变为另一个宿舍的时候,我们的代价是这两个宿舍中不同人的个数,按照这条规律,我们可以建图:
单独建超级源和超级汇,之后按照不同年份和不同宿舍建点,不同年的每个宿舍之间连接一条边,容量为1,费用为不同人的个数。源点连接前一年的点,容量为1费用为0,后一年的点连汇点,容量为1费用为0。这样跑一下最小费用最大流就可以了。
1 |
|