网络流 24 题做题记录
网络流 24 题做题记录
P3254 圆桌问题
源点连单位,容量为单位人数,桌子连汇点,容量为桌子容量,各单位连各桌子,容量为 \(1\),因为每个单位在每张桌子上最多 \(1\) 人,跑最大流。
P2763 试题库问题
源点连试题,容量为 \(1\),试题连对应种类,容量为 \(1\),种类连汇点,容量为该种类需要试题数,跑最大流。
P4015 运输问题
源点连仓库,容量为货物数,费用 \(0\);商店连汇点,容量为需要货物数,费用 \(0\),仓库连商店,容量无穷大,费用为 \(c_{i,j}\),跑最小费用最大流和最大费用最大流。
P4016 负载平衡问题
多于平均值的需要运出,于是从 \(s\) 连,容量为多出的部分,费用 \(0\),少于的同理,相邻点连边,容量无限制,费用 \(1\),跑最小费用最大流即可。
P4014 分配问题
和运输问题类似。
P1251 餐巾计划问题
拆点,将每天拆成早上和晚上,早上进干净餐巾并向汇点出,晚上进脏餐巾。
- 早上将干净餐巾运到汇点,即早上向汇点连容量为这天需要餐巾数,费用为 \(0\) 的边。
- 晚上从源点获得脏餐巾,即源点向晚上连容量为这天需要餐巾数,费用为 \(0\) 的边。
- 将这天晚上的脏餐巾留到下一天晚上,即这天晚上向下一天晚上连容量为 inf,费用为 \(0\) 的边。
- 买新餐巾,即源点向早上连容量为 inf,费用为 \(p\) 的边。
- 慢洗,也就是今天晚上的脏餐巾送到第 \(i+m\) 天早上变成干净毛巾,设当前为第 \(i\) 天,从这天晚上向第 \(i+m\) 天早上连容量 inf,费用 \(f\) 的边。
- 快洗,与慢洗类似。
P2770 航空路线问题
相当于求两条不相交的 \(1\) 到 \(n\) 的路线。拆点,若流过两点间的边则说明这个点被选中。内部边容量为 \(1\),因为每个点只能选一次,费用为 \(1\),因为会对结果造成 \(1\) 的贡献。输入的边就出点连入点,最后跑最大费用最大流。输出方案就沿着流满的边跑两遍即可。
P2774 方格取数问题
容易发现该题可以转化成二分图最小割点问题。此时需要保证两侧的点集内部都没有公共边,不妨让左侧为所有横纵坐标和为奇数的点,右侧是和为偶数的点。拆点跑最小割即可。
P3355 骑士共存问题
发现与上题类似,且按上题划分点集的方式能保证点集内部互不冲突。发现障碍对于其他格子并没有影响,建图时忽略最后减去个数即可。