![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
千杯湖底沙.
退役了。
OI就到此为止吧。
呃我又回来了
展开
-
最大流问题
定义网络网络就是一个有向带权图。为什么叫网络,我也不知道……我们可以进行一系列的类比:网络流就代表则运输水管,每一根水管都有一个单位时间内的运输上限,整个运水系统进入水量和出水量是相等的。所以:有向图的权值我们称为容量。流量就是单位进入系统的入度和出去系统的出度。容量的意义就在于,单位时间内流过的“水流”必须小于等于这个容量值。 再回头看一下网络的定义: 网络的原创 2017-12-28 18:14:42 · 166 阅读 · 0 评论 -
网络流小结
网络流建模建模的条件是根据限制性条件连边。 对于每条边的限制性条件用容量来限制; 对于每个点的限制性条件用拆点之后连自边来限制。网络流算法EK算法 Dinic算法 二分图的匈牙利算法 EK+SPFA费用流算法 ZKW费用流(等待填坑)写网络流的注意点数组大小问题邻接表从0开始,头结点数组填满-1.调不出来了就重敲。区分算法建模很重要!!!...原创 2018-07-21 14:38:47 · 154 阅读 · 0 评论 -
费用流模板——EK+SPFA实现的最小费用最大流
算法原理用两个字的高度概括——贪心~ 用一句话的概括:每一次通过spfa找到花费最小的可行流,然后进行增广,直到残量网络中,源点不能达到汇点。 其实还是通过代码理解比较好。code这里1是源点,n是汇点。 每次的读入四个数:有向边的两个结点+容量+费用#include<bits/stdc++.h>using namespace std;inline i...原创 2018-07-21 09:54:12 · 681 阅读 · 0 评论 -
[网络流24题]负载平衡问题 (费用流)
题目描述G公司n个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 输入输出格式 输入格式: 文件的第1 行中有1 个正整数 n ,表示有 n 个仓库。第 2 行中有 n 个正整数,表示 n 个仓库的库存量。 输出格式: 输出最少搬运量。题解很明显,题目中要求运送的货物最少,我们...原创 2018-07-28 15:55:43 · 241 阅读 · 0 评论 -
bzoj1711 [Usaco2007 Open]Dingin吃饭 poj3281 Dining
题面Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食. 每一头牛只喜欢吃一些食品和饮料而别的一概不吃.虽然他不一定能把所有牛喂饱,他还是想让尽可能多的牛吃到他们喜欢的食品和饮料. 农夫JOHN做了F(1<=F<=100)F(1<=F<=100)F (1 D(1<=D<=100)D(1<=D<=100)D (1 N(1&...原创 2018-07-14 13:59:32 · 216 阅读 · 0 评论 -
奶牛的聚会(最大流)
题面题目描述 N(3<=N<=200)头奶牛要办一个新年晚会。每头牛都会烧几道菜。一共有D(5<=D<=100)道不同的菜肴。每道菜都可以用一个1到D之间的数来表示。 晚会的主办者希望能尽量多的菜肴被带到晚会,但是每道菜的数目又给出了限制。每头奶牛可以带K(1<=K<=5)道菜,但是必须是各不相同的(例如,一头牛不能带三块馅饼,但是可以带上一块馅饼,一份面...原创 2018-07-14 09:38:18 · 1281 阅读 · 0 评论 -
bzoj1693 Asteroids(二分图最小顶点覆盖)
题目大意n * n矩阵有K个点,第i个点的坐标为(Xi,Yi)。每次可以把某行或者某列删掉。问至少需要多少次可以把K个点都删掉。 (n≤500n≤500n\leq 500)题解每一行每一列都建点,然后对于每一个坐标(Xi.Yi)(Xi.Yi)(X_i.Y_i)都建一条从Xi到YiXi到YiX_i到Y_i容量为1的边。 然后就是二分图的最小顶点覆盖了。 可以证明最小顶点覆盖=最小割...原创 2018-07-13 20:15:35 · 276 阅读 · 0 评论 -
最大流算法之一——EK算法
EK算法流程EK算法的流程很简单:随意找一个可行流作为流量网络更新的基础(一般题目没有规定可以采用流量为0的可行流)利用bfsbfsbfs找一条从源点到汇点的可行流路径用新找到的可行流路径更新原有流量网络:先找到该可行流路径中流量最小边,然后将该路径上所有正向边都减去该最小边的流量,反向边都加上该最小边的流量(想想,为什么要设反向边)不断重复2和3两个步骤,直到在第2步的时候找不到...原创 2018-07-07 16:14:00 · 3312 阅读 · 0 评论 -
POJ1149 养猪(最大流)
题面(来源于HLOJ)题目描述 尼克在一家养猪场工作,这家养猪场共有M间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍,客户们从早上开始一个接一个来购买生猪,他们到达后首先用手中的钥匙打开他所能打开的全部猪舍,然后从中选取他要买的生猪,尼克可以在此期间将打开的猪舍中的猪调整到其它开着的猪舍中,每个猪舍能存放的猪的数量是没有任何限制的。买完猪后客户会将他打开的猪舍关上。 ...原创 2018-07-13 16:02:36 · 629 阅读 · 0 评论 -
【网络流24题之一】飞行员配对问题+求方案(匈牙利算法求二分图最大匹配)
题面题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,试设计一...原创 2018-07-10 21:18:34 · 298 阅读 · 0 评论 -
【网络流24题之一】飞行员配对问题+求方案(网络流dinic算法求二分图最大匹配)
题面题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,试设计一...原创 2018-07-09 21:24:48 · 447 阅读 · 0 评论 -
最小割
定义网络的割:对于一个网络,存在一个边集,满足:删除这些边之后使得原网络不再连通。S-T割:首先是一个网络的割,然后满足源点和汇点在两个不同的连通块里面。最大流=最小割先证明任意割>=任意流 - 最小割中,源点s在的集合记作S,汇点t在的集合记作T,那么在原网络中存在这些边:从S出发指向T。 - 这些边一定不存在前驱后继的关系 - 那么这些边的流量之和<...原创 2018-07-08 18:39:01 · 3598 阅读 · 0 评论 -
最大流算法之三——Dinic算法的优化——当前弧优化
当前弧优化我们通过上一篇博客 传送门 知道,每一次bfs之后都跟着若干次dfs。每一次dfs都会发现一条可行流,而且这个可行流肯定是该路径的最大可行流。所以我们对于一条路径进行增广之后,肯定不用进行第二次增广。 所以我们这里加了一个优化,在同一个 bfs分层后跟着的dfs里面,加入要 遍历编号为1、3、5、7、9的五条边,我们默认cur[i]=1cur[i]=1cur[i]=1,然后...原创 2018-07-08 15:19:29 · 1587 阅读 · 0 评论 -
最大流算法之二——Dinic算法
Dinic是优化的EKDinic算法的流程是,每次寻找可行流路径的时候都先通过一次bfs给原网络分层(如果不能分层,那么已经是最大流网络了),再通过dfs给分层后的网络找可行流路径(这时候不是仅仅找一条,二十一次dfs可以找许多条可行流)。 (图片来源:https://www.cnblogs.com/LUO77/p/6115057.html)这里六张图是在若干次寻找增广路之后的中间形态。...原创 2018-07-08 14:59:56 · 414 阅读 · 0 评论 -
poj3422 卡卡的矩阵旅行(费用流)
题意做过过河卒(一取方格数)、传纸条(二取方格数),我们这里来安利K取方格数。 也就是给出一个方阵,大小为n×nn×nn\times n 每一个格子都有一个权值。 我们需要从左上角到右下角取nnn条路径。每一条路径都会取掉当前方格内的数。多条路径通过同一个位置的话,这个位置的数只取一次。 要求最大化k条路径取到的数之和。题解由于每一个点的数只能被取一次,但是可以被走过多次。...原创 2018-07-21 18:42:42 · 263 阅读 · 0 评论