网络流
Visors
这个作者很懒,什么都没留下…
展开
-
网络流24题之太空飞行计划——最大权闭合图转最大流模型
做网络流24题时感觉就是对建图能力的挑战,本来应该好好整理一下的,奈何时间不足,尽在此简述一下。一开始做这题时想了另外一个建图方式,但实际上是我读错题目了。这题只要求净收益最大,而不要求所有实验都需要进行。只关心收益的情况下,我们就可以考虑一种合适的建图方法,仅以钱为权重。这里就可以使用闭合图模型。闭合图不是环看见闭合图这个名词,相比很多人都会以为是含有一个很大的环的图(你懂的),但事实上并不是。定义一个有向图G=(V,E)G=(V,E)G=(V,E)的闭合图(closure)是该有向图的一个点集,原创 2020-10-02 18:43:00 · 187 阅读 · 0 评论 -
MCMF (EK + SPFA)
//// Created by Visors on 2020/9/30.//// 题目名:【模板】最小费用最大流// 题目来源:luogu// 题目链接:https://www.luogu.com.cn/problem/P3381// 算法:MCMF.cpp// 用途:最小费用最大流// 时间复杂度:O(TODO)//#include <bits/stdc++.h>using namespace std;const int oo = 0x3f3f3f3f;typ原创 2020-10-02 11:28:57 · 362 阅读 · 0 评论 -
ISAP算法
ISAP 的意思是 Improved SAP ,即改进的 SAP ,而 SAP(Shortest Augument Path,最短增广路)算法其实指的就是 Edmonds-Karp 算法。但事实上,ISAP 更像是 Dinic ,而不是 SAP。原创 2020-09-28 15:22:43 · 1543 阅读 · 1 评论 -
Dinic算法
相比于EK算法,Dinic算法在稀疏图上效率相当(可视n、m相近),而在稠密图上的处理更优秀。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》。分层思想Dinic算法在每次增广前,先用 BFS 来将图分层。设源点的层数为000,那么一个点的层数便是它离源点的最近距离。通过分层,可起到如下两种效果:如果不存在到汇点的增广路(即汇点的层数不存在),我们即可停止增广。确保我们找到的增广路是最短的(每次找增广路的时候,都只找比当前点层数多111的点进行增广)。两个优化多路增广:在原创 2020-09-27 04:42:28 · 2877 阅读 · 0 评论 -
Edmonds-Karp动能算法
Edmonds-Karp的思想其实就是基于网络流基本思想的BF算法,即对于含有反向边的残量网络,贪心增广每一条增广路的可改进量,直到残量网络不含增广路。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》以下是我基于链式前向星存储方式实现的Edmonds-Karp算法。//// Created by Visors on 2020/9/25.//// 题目名:【模板】网络最大流// 题目来源:luogu// 题目链接:https://www.luogu.com.cn/problem/P原创 2020-09-26 16:48:47 · 441 阅读 · 0 评论 -
网络流的核心思想
很久以前学网络流的时候觉得网络流复杂生涩,其实网络流正如其名,是一个非常形象的水流动的模型。理解下面两个概念,并掌握找到、操作他们的方法,网络流的各类算法其实很容易被记忆和实现。原创 2020-09-24 23:26:31 · 446 阅读 · 0 评论