网络流专题——基本模型与技巧

这篇博客深入探讨了网络流的基本模型,包括流量表示变迁、最小割模型、最大权闭合子图等,并通过多个实例解析了它们在解决实际问题中的应用。作者提示,对于变迁类问题,可以使用网络流并结合拆点限流方法;最小割模型常用于处理“可以弯着走能否走通”的问题;最大权闭合子图本质上是最小割,常用于描述有依赖关系的物品选择问题。此外,还提及了费用递增模型和流量平衡的概念。
摘要由CSDN通过智能技术生成

该博客整理网络流的常见模型,不建议初学者食用
感谢:本文例题即部分解释来自THU 胡泽聪授课pdf

流量表示变迁

eg1

给定一张的无向图,每条边有长度。点i处有ai头牛,以及一个能容纳bi头
牛的牛棚。牛可以沿边移动,每条边上可以同时有任意头牛经过。一头牛经过
一条边所需时间即为道路长度。
给出一个将牛分配到牛棚的方案,并最小化所需移动时间T。
hint:我们发现这是一个最小值问题,但是不好求,于是我们考率二分答案,显然这是单调的;二分后变成判定性问题;
那么如何解决该判定性问题?网络流!
我们将所有点拆为a与b S连a流量为 ai a i ,b连T流量为 bi b i ,ab间流量为无穷。当当前的二分值为mid时,我们将满足最短路<=mid的两点i,j之间连边 ai>bj a i − > b j bi>aj b i − > a j 流量为无穷,当最大流= ni=1ai ∑ i = 1 n a i 时便成立。不拆点会错,为啥?因为我们的连边原则是dis<=mid 但如果直接连到点j而j与k距离是mid 那i与k距离便>mid 所以会出错。
eg2

有m个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。
依次来了n个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头
猪。
每个顾客分别都有他能够买的数量的上限。
每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开
着的猪圈里,然后所有猪圈重新关上。
问最多总共能卖出多少头猪。
1 ≤ m ≤ 1000、1 ≤ n ≤ 100。
hint:
分开考虑每个猪圈。考虑能对其产生影响的若干顾客。
只有这些顾客才能买,也只有他们才能移动猪圈里的猪。
那么从源向每个猪圈的第一个顾客连边,容量为初始的数量。
每个猪圈的第i个顾客向第i + 1个顾客连边,容量为无穷大。
顾客向T连边 流量为购买能力(正确性交给读者思考)
eg3

有a种食物和b种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享
用一种食物和一种饮料。
现在有n头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表。
问最多能使几头牛同时享用到自己喜欢的食物和饮料。
hint:
有些同学会想到二分图匹配于是这样的图便有了
这里写图片描述
那么就有一个十分严重的问题 小学问题:两只牛 最大几个匹配?两个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值