G 公司有 $ n $ 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 $ n $ 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
建图分析
考虑图中的流量是所有仓库的盈余或者亏损量,建立二分图,左边集合为盈余的仓库,右边集合为亏损仓库,S和所有盈余的仓库建边容量为盈余量费用为0,T和所有亏损的建边容量为亏损量费用为0,每个点可以和同个集合相邻的两个点和不同集合的两个点建一条容量为INF费用为1的边,求最小费用最大流即可。
代码
1 |
|
Success and failure are temporary.
G 公司有 $ n $ 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 $ n $ 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
考虑图中的流量是所有仓库的盈余或者亏损量,建立二分图,左边集合为盈余的仓库,右边集合为亏损仓库,S和所有盈余的仓库建边容量为盈余量费用为0,T和所有亏损的建边容量为亏损量费用为0,每个点可以和同个集合相邻的两个点和不同集合的两个点建一条容量为INF费用为1的边,求最小费用最大流即可。
1 | #include<bits/stdc++.h> |