网络流
Rancho__
这个作者很懒,什么都没留下…
展开
-
洛谷 P3376 【模板】网络最大流
EK算法的核心思想就是建立一条反边,使两条交叉的路,走它原本最它最近的路。 如果联系费用流的话,最小费用最大流的反边,它的反边费用就是 -cost ,因为当两条路交叉,走同一条路时,加上这条边的价格和减去这条边的价格抵消了。 但是在最大流中,每一条流的大小取决于,该流的每一条边中的最小流量,所以需要把反边的流量初始化为0,代表这条边不能流。 当一条边被流过之后,反边流向加等该流大小,如果此时此边...原创 2019-08-06 17:55:48 · 125 阅读 · 0 评论 -
洛谷 P2756 飞行员配对方案问题
这题是二分图匹配,题目要求输出最大的配对数,以及配对方案。 学过网络流之后这题就可以写了,除了外籍飞行员和英国皇家飞行员之外,我们建立一个源点-- 0 和汇点-- n+1。 让源点连接外籍飞行员,建立一条边流量为1的边,然后建立反边。再给英国皇家飞行员连接上汇点,同样边的流量为1,反边流量为0。 这样的话网络流的图就建立好了,第一问求的最大匹配数,就是这个图的最大流。对于配对方案的话,一般的写法就...原创 2019-08-07 09:18:53 · 120 阅读 · 0 评论 -
洛谷 P3381 【模板】最小费用最大流
最小费用最大流的意思就是,在流量相同的情况下,我们找出最小费用的最大流。 方法是每次寻找一条最小花费的路,这个寻找我们用最短路算法spfa,这里的最短路修改成最小花费,权值的名称变了而已。 找到之后单位花费之和,也就是d[t],###### 到终点的最小代价 * 该流的流量 ##### 累加起来就可以了。 需要注意的是,反边的费用应该设置成原本花费的相反数。 #include <iostre...原创 2019-08-07 09:29:18 · 112 阅读 · 0 评论 -
HDU 3081 Marriage Match II (二分+网络流+并查集)
注意 这题需要注意的有几点。 首先板子要快,尽量使用带当前弧优化的dinic,这样跑起来不会超时。 使用弧优化的时候,如果源点设置成0,记得将cur数组从0开始更新,因为有的板子并不是。 其次这题是多组样例输入,所以每次需要清空head数组,pre数组,deep数组,vis数组等等,以及建图之前将cnt设置为0。 题意 有n个女孩和n个男孩,给出哪些女孩和哪些男孩从未发生冲突,以及女孩之间的朋...原创 2019-08-09 14:55:15 · 98 阅读 · 0 评论 -
P3376 【模板】网络最大流 dinic详解
dinic的核心在于分层和多路增广。 分层的意思是,对于图用bfs搜出每一层,避免出现dfs深度过深的情况。 多路增广,利用的是dfs的回溯性质,这样就可以在一个点增广出它的所有流量。 #include <iostream> #include <stdio.h> #include <string.h> #include <queue> using n...原创 2019-08-07 14:16:30 · 158 阅读 · 0 评论 -
POJ-3821-Dining (拆点网络流)
这题为什么不能用 左边放食物,中间放牛,后面放水? 原因很简单,假设一头牛喜欢两个食物和两种水,如果从一个食物A,走到牛A,再走到水A。 此时还可以有另一条路,从另一个食物B,走到该牛A,并走到该牛喜欢的另一个水B。 这是错误的原因之一,其实也跟反边有关。 所以对于牛,拆开,中间建立一条边,说明该牛已经使用过,这样也避免了从其它食物C走到牛A,此时我们希望它走反边,即牛A到食物A,再从食物A走向其...原创 2019-08-14 16:59:59 · 138 阅读 · 0 评论 -
POJ-1087 A Plug for UNIX (网络流)
思路 电器数1 ~ 100,附带100种接口,注意题目:You notice that some of the devices use plugs for which there is no receptacle. 墙上接口1 ~ 100,还有1 ~ 100转接口,转接口有两个接口。假设所有的接口类型都不相同,接口就有400种。所以汇点值 >= 501。 读入电器的时候,它的接口可能在墙上并...原创 2019-08-15 17:11:39 · 175 阅读 · 0 评论