网络流 - 最大流
最大流
繁凡さん
只想当个小透明,就图一乐^q^,希望可以做出一些微小的贡献(目前研究方向:自然语言处理、深度学习中的对抗攻击、元学习,欢迎大佬们来与我交流^0^)
展开
-
CF498C Array and Operations(数论 + 最大流)
首先显然的是,如果一次操作中我们选择的v不是质数,那显然把它拆成若干次v是质数的操作更优(因为任何一个合数都可以拆成若干个质数的次方的乘积,唯一分解定理,这样拆成质数最后操作的次数会更多),那么问题就变成了:每次选取满足要求的一对数,同除一个质数,问能操作多少次。我们发现题目中还有一个重要的条件:ik+jki_k+j_kik+jk 为奇数,那么iki_kik 和 jkj_kjk 一定有一个是奇数,另一个是偶数,因此我们可以把数列中的元素按下标的奇偶分成两个集合。感觉有点像二分图了。最多的操作看上去.原创 2020-11-04 22:26:23 · 294 阅读 · 0 评论 -
【网络流】学习笔记:一次理解网络流!
一、从概念入手网络流用于解决流量问题网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.定义:带权的有向图G=(V,E),满足以下条件,则称为网络流图(flow network):仅有一个入度为0的顶点s,称s为源点仅有一个出度为0的顶点t,称t为汇点每条边的权值都为非负数,称为该边的容量,记作c(i,j)。弧的流量:通过容量网络G中每条弧< u,v>,上的实际流量(简称流量),记为f(u,v);性质对于任意一个时刻,设f(u,v)实际流量,则整个转载 2020-06-17 16:07:18 · 4885 阅读 · 4 评论 -
0x6A.图论 - 网络流初步
网络流初步学习原创 2020-07-07 11:44:30 · 791 阅读 · 2 评论 -
luogu P1231 教辅的组成(建图、拆点、最大流)
luogu P1231 教辅的组成每一本书都要拆点,拆成入点和出点,因为每一本书只能匹配一次图片来源#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>using namespace std;typedef long long ll;int n, m, S, T;namespace dinic{原创 2020-09-18 20:00:10 · 279 阅读 · 0 评论 -
最大流(Edmonds-Karp,Dinic,ISAP,Push-Relabel 预流推进算法)
整理的算法模板合集: ACM模板目录Edmonds−KarpEdmonds-KarpEdmonds−KarpDinicDinicDinicISAPISAPISAPPush−RelabelPush-RelabelPush−Relabel 预流推进算法通用的预流推进算法HLPP 算法Edmonds−KarpEdmonds-KarpEdmonds−KarpEK 算法的时间复杂度为O(nm2)O(nm^2)O(nm2),一般可以处理10310^3103 ~ 10410 ^4104的数据/*luogu P2原创 2020-08-19 18:19:36 · 2236 阅读 · 0 评论 -
解题报告:X、骑士共存问题(最大独立集)(匈牙利 / 最大流)
X、骑士共存问题(最大独立集)(匈牙利 / 最大流)题目链接【问题分析】二分图最大独立集,转化为二分图最大匹配,从而用最大流解决。【建模方法】首先把棋盘黑白染色,使相邻格子颜色不同。把所有可用的黑色格子看做二分图X集合中顶点,可用的白色格子看做Y集合顶点。建立附加源S汇T,从S向X集合中每个顶点连接一条容量为1的有向边,从Y集合中每个顶点向T连接一条容量为1的有向边。从每个可用的黑色格子向骑士一步能攻击到的可用的白色格子连接一条容量为无穷大的有向边。求出网络最大流,要求的结果就是可用格子的数量减原创 2020-08-02 19:02:03 · 322 阅读 · 0 评论 -
解题报告:线性规划与网络流24题
目录A.luogu P2756 飞行员配对方案问题 【提高+/省选- 】B.luoguP2762 太空飞行计划问题【省选/NOI- 】*【题解】网络流24题 24/24线性规划与网络流24题 解题报告[线性规划与网络流24题] 网络流常见模型问题编号问题名称问题模型转化模型1飞行员配对方案问题二分图最大匹配网络最大流2太空飞行计划问题最大权闭合图网络最小割3最小路径覆盖问题有向无环图最小路径覆盖网络最大流4魔术球问题有向无环图最小路径原创 2020-07-31 20:55:39 · 2208 阅读 · 0 评论 -
【网络流24题】D、魔术球问题(有向无环图的最小路径覆盖、思维)
D、魔术球问题(有向无环图的最小路径覆盖、思维)【省选/NOI- 】P2765 魔术球问题【问题分析】枚举答案转化为判定性问题,然后最小路径覆盖,可以转化成二分图最大匹配,从而用最大流解决。【建模方法】枚举答案A,在图中建立节点1…A。如果对于i<j有i+j为一个完全平方数,连接一条有向边(i,j)。该图是有向无环图,求最小路径覆盖。如果刚好满足最小路径覆盖数等于N,那么A是一个可行解,在所有可行解中找到最大的A,即为最优解。具体方法可以顺序枚举A的值,当最小路径覆盖数刚好大于N时终止,原创 2020-07-17 23:15:07 · 480 阅读 · 0 评论 -
【网络流24题】解题报告:C、最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)
C、最小路径覆盖问题(有向无环图最小路径覆盖)(最大流)【省选/NOI- 】拆点最大流【问题分析】有向无环图最小路径覆盖,可以转化成二分图最大匹配问题,从而用最大流解决。【建模方法】构造二分图,把原图每个顶点i拆分成二分图X,Y集合中的两个顶点Xi和Yi。对于原图中存在的每条边(i,j),在二分图中连接边(Xi,Yj)。然后把二分图最大匹配模型转化为网络流模型,求网络最大流。最小路径覆盖的条数,就是原图顶点数,减去二分图最大匹配数。沿着匹配边查找,就是一个路径上的点,输出所有路径即可。【建模原创 2020-07-16 22:39:30 · 440 阅读 · 0 评论 -
【网络流24题】解题报告:E 、圆桌问题(最大流求二分图多重匹配)
可以直观的想到,二分图的左边是单位,右边是桌子由于题目的限制 每个单位只能在一个桌子坐一个人所以我们就把每个单位向各个桌子连一道流量为1的边由源点向每个单位连上 连上单位人数的边由每个圆桌向汇点连上 圆桌人数的边然后跑一下最大匹配 如果最大匹配数等于所有单位的人数和那么就可以 完全安排 否则不能完全安排然后再枚举一下,如果剩余流量 == 0则该点为方案之一,输出即可。#include<bits/stdc++.h>using namespace std;typedef l.原创 2020-07-15 23:07:25 · 351 阅读 · 0 评论 -
【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)
网络流24题 A原创 2020-07-13 10:16:03 · 505 阅读 · 0 评论 -
解题报告:POJ 3281 Dining(最大流 / “三分图”建图)
B.POJ 3281 DiningDiningDining(最大流/建图模板)【省选/NOI- 】有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料。现在有 N头牛,每头牛都有自己喜欢的食物种类列表和饮 料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。( 1<=F<=100,1<=D<=100,1<=N<=100)1 <= F <= 100, 1<= D <= 100, 1 <=原创 2020-07-11 23:19:46 · 218 阅读 · 0 评论 -
解题报告:【kuangbin带你飞】专题十一 网络流
目录A.POJ 3436 ACM Computer FactoryACM\ Computer\ FactoryACM Computer Factory【省选/NOI- 】B.POJ 3281 DiningDiningDining(最大流/建图模板)【省选/NOI- 】网络流建图汇总A.POJ 3436 ACM Computer FactoryACM\ Computer\ FactoryACM Computer Factor原创 2020-07-11 23:16:43 · 307 阅读 · 0 评论 -
【网络流】解题报告: luogu P2045 方格取数加强版(k取方格数)(最大费用最大流)
点边转化:把每个格子 (i,j) 拆成一个入点一个出点。从每个入点向对应的出点连两条有向边:一条容量为 1 ,费用为格子 (i,j) 中的数;另一条容量为 k−1 ,费用为 0 。从 (i,j) 的出点到 (i,j+1) 和 (i+1,j) 的入点连有向边,容量为 k ,费用为 0 。以 (1,1) 的入点为源点, (n,n) 的出点为汇点,求最大费用最大流。#include<iostream>#include<algorithm>#include<cstdio.原创 2020-06-24 23:40:19 · 322 阅读 · 0 评论 -
【网络流】解题报告:luogu P3376 【模板】网络最大流
题目链接: P3376 【模板】网络最大流DinicDinic算法是网络流最大流的优化算法之一,每一步对原图进行分层,然后用DFS求增广路。时间复杂度是O(n^2*m),Dinic算法最多被分为n个阶段,每个阶段包括建层次网络和寻找增广路两部分。Dinic算法的思想是分阶段地在层次网络中增广。它与最短增广路算法不同之处是:最短增广路每个阶段执行完一次BFS增广后,要重新启动BFS从源点Vs开始寻找另一条增广路;而在Dinic算法中,只需一次DFS过程就可以实现多次增广。层次图:层次图,就是把原图中原创 2020-06-19 17:07:23 · 371 阅读 · 2 评论 -
【网络流】解题报告:luogu P2740 [USACO4.2]草地排水Drainage Ditches(Edmonds-Karp增广路,最大流模板)
题目链接:草地排水若一条从源点到汇点的路径上各条边的剩余容量都大于0,则称这条路径为一条增广路。Edmonds-Karp增广路的策略就是不断用bfs寻找增广路,直至网络中不在存在增广路为止。在每次寻找增广路的过程中,EK算法只考虑图中所有f(x,y)<c(x,y)f(x,y)<c(x,y)f(x,y)<c(x,y)即剩余容量大于0的边。这样用bfs寻找增广路,并计算路径上各边剩余容量的最小值minf,最后网络的流量就可以增加minf。(想象成水管,最后只能流出所有管道里口径最小的流原创 2020-06-17 17:43:34 · 286 阅读 · 0 评论