
最大流
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【题目泛做】拆分(网络流)
CF 212A 数据范围放大版。题解:首先容易发现每个点的 minmax 差不会超过 111,且差为 111 当且仅当度数不是 ttt 的倍数。换言之,只要保证每个点 iii 分给 jjj 的都在 ⌊deg/t⌋\lfloor deg/t\rfloor⌊deg/t⌋ 和 ⌈deg/t⌉\lceil deg/t\rceil⌈deg/t⌉ 即可。证明考虑归纳即可。那么第一个思路就很显然了,考...原创 2020-04-03 20:01:51 · 223 阅读 · 0 评论 -
【BZOJ3716】[PA2014]Muzeum(坐标旋转)(贪心)(最大权闭合子图)
传送门题解:首先这道题的最大权闭合子图模型是很显然的,但是我们并不能建图拿来跑最大流。考虑利用图的特殊性质把最大流贪心流出来。首先所有坐标乘上余切然后旋转,把一个警卫看得到的所有手办放到左上方向。将所有点按照横坐标从小到大排序。处理一个警卫之前先把所有横坐标比他小的加入,然后从纵坐标最小的能流的开始贪心流就行了。这样贪心的正确性是显然的,考虑我们把一个在较大纵坐标流的放到一个较小纵...原创 2019-10-14 15:03:01 · 191 阅读 · 0 评论 -
2018.10.10【WUOJ124】Football Coach(最大流)
传送门解析:很粗暴的网络流建图,还是很有思维难度的。思路:首先我们贪心地将所有与nnn有关的比赛全部令nnn获胜。可以证明这样显然是正确的。然而如果这时候还有队伍的分大于nnn,那么显然nnn不可能取得最终胜利然后我们现在要将剩下的比赛的胜负分配,使得没有任何一个队伍最后比分大于nnn。那么这就是一个显然的匹配问题,因为每场比赛必然有总共两分加在其中两个队伍上。那么每场比赛就会...原创 2018-10-10 23:00:54 · 204 阅读 · 0 评论 -
2018.10.11【POJ1422】Air Raid(最小路径覆盖)
传送门解析:其实最小路径覆盖没有什么特别的,还是一个匹配问题,我们将这个问题转化成网络流。发现我们其实初始可以将每个点都放上一个伞兵,这样伞兵个数显然是nnn,然后我们发现每一个点的伞兵可以由经过他前一个点的伞兵代替,于是我们将这条路径标记一下。发现每个点最多在所有入边里面产生一个匹配,在所有出边里面产生一个匹配。我们将每一个点拆成两个,按照边的出入关系建图,跑二分图最大匹配就行了。...原创 2018-10-11 08:12:14 · 133 阅读 · 0 评论 -
2018.03.08【JSOI2018】【洛谷P4518】【BZOJ5316】绝地反击(二分图匹配)(退流)(扫描线)
洛谷传送门BZOJ传送门解析:我们首先二分答案。然后判断如果一条飞船在时限内甚至飞不到圆周上就肯定gg了。如果能的话,我们将圆周分为nnn等份,第一份是从xxx轴开始的1/n1/n1/n圆,我们看这条飞船能不能飞到整个圆,如果能,就和每个区间连一条边。如果不能我们将它和整个圆匹配,就先记录哪些区间的端点是能够匹配的,然后记录下匹配的最左端点和未匹配的最左端点。跑二分图最大匹配,如果...原创 2019-03-09 10:52:21 · 240 阅读 · 0 评论 -
【模板】最大流ISAP
存个板子#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1<<20|1; static ch...原创 2019-03-29 21:09:38 · 198 阅读 · 0 评论 -
【模板】最大流HLPP
存两份板子,一份复杂度带log,用优先队列,另一份不带,但是空间消耗大一些。#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs i...原创 2019-03-29 21:11:39 · 351 阅读 · 0 评论 -
【51nod1325】两棵树的问题(最大权闭合子图)
传送门题解:太久没写网络流了,连加边都写错了,居然还TM过了80%的点,出题人该被拖出去阿鲁巴很显然这是一个冲突建模,由于数据范围实在太小,我们考虑枚举每一个点必选,然后它作为根,那么限制条件就很明显了,选了节点uuu就必须选节点uuu的父亲,然后最大化所有选了点的权值和。显然是最大权闭合子图。代码:#include<bits/stdc++.h>#define ll ...原创 2019-07-02 19:29:43 · 188 阅读 · 0 评论 -
【GDKOI2013】Country(回文自动机)(最小链覆盖)
给定一个长度为n的字符串s,现在要从s中选出尽量多的子串,满足选出的子串都是回 文的,并且不存在一个串是另外一个串的子串的情况。n ≤ 300000题解:建出PAM求这个DAG上的最长反链。但是不用做Floyd,这个图上的最长反链就等于最小链覆盖等于最小路径覆盖。没错,这个DAG上的最小链覆盖神奇地等于最小路径覆盖。但是还是有一个问题。这道题的网络流复杂度是可以被卡满的,全aaa串...原创 2019-07-19 15:11:04 · 290 阅读 · 0 评论 -
【TC SRM 575】TheTilesDivOne(最大流)
传送门现在题面看不了,题意可以在TheTileDivTwo看,数据范围是把横纵坐标扩展到47Div2传送门题解:注意到不管怎么旋转,两个白色格子一定不同行。对于偶数行的白色格子,源点向它连容量为1的边,奇数行的白色格子,它向汇点连容量为1的边。然后偶数行的白色格子向所有相邻的黑色格子连边,所有黑色格子向相邻的奇数行白色格子连边。所有点拆开成入点和出点,限制流量为1。跑最大流即为答...原创 2019-09-12 12:07:39 · 309 阅读 · 0 评论 -
【TC SRM 594】FoxAndGo3 (二分图最大独立集)
传送门题解:注意到一个事实,白棋与和它相邻的一个空格子在终止情况下不可能同时为空。我们连边表示两个位置不可能同时为空,显然这是一个二分图。为了最大化空的位置,我们需要在这里面找一个最大独立集。直接建图然后Dinic求一个二分图最大匹配就行了。代码:#include<bits/stdc++.h>#define ll long long#define re regis...原创 2019-09-12 21:14:46 · 350 阅读 · 0 评论 -
【CF793G】Oleg and chess(扫描线)(线段树)(ODT)(最大流)
传送门题解:MD板子敲错毁一生显然我们要搞一下看哪些位置能放。而每个位置只能放一个的限制也就变成行列的匹配。给出的矩形意味着这些行列不能匹配。显然不能直接建图跑匹配。考虑对于行列分别建一棵线段树,则我们想办法把合法区域拆成若干不相交矩形。可以直接借助ODT进行划分,具体实现请参见代码。代码:#include<bits/stdc++.h>#define ll lo...原创 2019-10-07 14:32:38 · 329 阅读 · 0 评论 -
2018.10.10【HDU4322】Candy(最大费用最大流)(建图)
传送门解析:隐藏极深的一个匹配问题。其实就是将糖果和小朋友匹配,问能否满足所有小朋友的需要。思路:看出来是一个匹配问题,那就直接考虑网络流。首先先考虑k=2k=2k=2怎么做显然当k=2k=2k=2时,我们尽量用小朋友喜欢的糖去提升他的快乐值,最后每个小朋友剩的快乐值就只有几种情况,要么差的远,要么刚好满足,要么还剩1。这个可以直接用最大流实现,我们对每个小朋友向汇点连边,容量为⌊...原创 2018-10-10 21:05:32 · 266 阅读 · 0 评论 -
2018.10.10【CQOI2015】【BZOJ3931】【洛谷P3171】网络吞吐量(最短路)(最大流)
BZOJ传送门洛谷传送门解析:好粗暴的最短路加最大流。。。思路:首先题目要求数据沿最短路传递,而且题目都说了DijkstraDijkstraDijkstra,怎么还有人写SPFASPFASPFA,不怕被卡吗?于是,我们先DijkstraDijkstraDijkstra求出最短路。然后根据题目要求构建流网络图,就是只有在最短路树里面的边才能够加入流网络,并且容量设为INFINFINF...原创 2018-10-10 16:11:10 · 153 阅读 · 0 评论 -
【模板】最大流Dinic算法
选取题目:loj101解析:zxyoizxyoizxyoi什么时候有时间什么时候更新系列。。。代码:#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;#define re register#define ll long long#define ull unsigned long long#define it原创 2018-08-20 16:58:04 · 298 阅读 · 0 评论 -
【模板】无源汇有上下界可行流
选取题目:loj115解析:仍然是有时间再更新系列。。。代码:#include&amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define c原创 2018-08-20 17:01:14 · 195 阅读 · 0 评论 -
【模板】有源汇有上下界最大流
参考题目:loj116有时间再更新吧,等我把网络流的模板都学一遍再说。。。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define re register#define ll long long#define cs const#define st static#define gc getchar#d...原创 2018-08-20 20:02:35 · 302 阅读 · 0 评论 -
【模板】最小费用最大流
参考题目:loj102洛谷P3381解析:以后会更新。另外,dijkstradijkstradijkstra+势的算法,我的代码要开O2O2O2才能过,而且比不开O2O2O2快了将近一倍(听说只有手写堆不会被卡)。如能帮忙卡一下常数,万分感激。代码(SPFASPFASPFA):#include<bits/stdc++.h>using namespace std;#...原创 2018-09-26 15:14:15 · 165 阅读 · 0 评论 -
2018.10.11【POJ2594】Treasure Exploration(最小链覆盖)
传送门解析:其实最小链覆盖就是允许节点相交的最小路径覆盖。那么这个问题与最小路径覆盖的匹配模型的区别就在于,每个点可以直接和自己能到达的节点的后继匹配。所以我们直接做一个FloyedFloyedFloyed求传递闭包,然后按照最小路径覆盖的方式建跑网络流就行了。代码:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&l...原创 2018-10-11 15:11:57 · 263 阅读 · 0 评论 -
2018.10.11【SDOI2017】【洛谷P3705】【BZOJ4819】新生的舞会(0/1分数规划)(最大费用最大流)
洛谷传送门BZOJ传送门解析:随便写一发过了样例然后就A了?思路:分数规划的式子都列好了。。。就等你想出验证方法。。。一看这又双叒叕是一个匹配问题。。。还能是什么。。。网络流。然后是男生女生配 (滑稽) 这不是二分图边的最大权匹配吗。。。于是就把问题转化到了最大费用最大流上面。。。我们直接建图源点向每个男生连边,每个男生向每个女生连边,每个女生向汇点连边。以上所有边的边权为1...原创 2018-10-11 20:55:18 · 204 阅读 · 0 评论 -
2018.10.15【BZOJ1834】【洛谷P2604】【ZJOI2010】网络扩容(最大流)(费用流)
BZOJ传送门洛谷传送门解析:残余网络的巧妙利用。。。其实就是那种做过一次就会一类的题。。。有谁想到这道题可以直接利用第一问跑完最大流的残量网络跑费用流呢。。思路:第一问是一个显然的最大流。然而第二问很多人就被卡住了,扩容?还有费用?我们先想一想,扩容怎么处理,我们再建立一个超级源,向111连一条容量为kkk的边,表示这一次需要扩容kkk的流量。然后我们把原来的每条边再残量网...原创 2018-10-15 10:27:48 · 156 阅读 · 0 评论 -
2018.10.09【BZOJ2095】【POI2010】MOS-Bridges(欧拉回路)(二分答案)(最大流)
DarkBZOJ传送门解析:这绝对是我做过的最扯的欧拉回路的题了,明明标签是欧拉回路,可是怎么是一道网络流加二分答案啊?思路:首先,看到要求最大值最小,多半是个二分,然而。。。二分之后验证什么?好吧,看题目应该知道是要求欧拉回路。那直接爆搜求欧拉回路?用 (和谐) 想都知道是不可能的,怎么都能卡掉。那怎么验证?先想一想如何验证一般图是否存在欧拉回路:1.无向图:一笔画问题相...原创 2018-10-09 21:08:06 · 223 阅读 · 5 评论 -
2018.10.10【POJ3281】Dining(最大流)(建图)
传送门解析:网络流建图入门题。思路:首先一看这是一个匹配问题,二分图匹配?这显然不能用二分图匹配做。。。因为每一头牛要匹配两个点。。那么匹配问题的解法就还剩网络流。怎么建图。首先,每种食物和饮料分别只有一份。我们分别将它们向源点和汇点连容量为1的边,保证只有一份被记录在最终的方案中。然后每头牛分别向它们喜欢的食物和饮料连边。最后一步,也是很多匹配问题最容易忘记的一点,把牛拆...原创 2018-10-10 10:51:26 · 107 阅读 · 0 评论 -
2018.10.10【ZOJ2760】How Many Shortest Path(最短路)(网络流)
传送门解析:题意简述:给出一个有向图,问从SSS到TTT的边不相交的最短路有多少条。思路:首先肯定要求最短路。然后这是一个匹配问题。我们考虑用网络流来完成。匹配问题的一般套路就是将需要匹配的东西在流网络中用一条边串起来,设容量为1,求最大流就是匹配的数量了。那么这道题中,什么是合法可匹配的东西?由于我们已经求了最短路了,那么满足dist[v]=dist[u]+w[e]dis...原创 2018-10-10 13:57:11 · 123 阅读 · 0 评论 -
2018.10.10【POJ1149】PIGS(最大流)(玄学建图)
传送门解析:今天DZYODZYODZYO讲的最难的一道题,课上怎么都想不出来的坑题。。。建图真是太巧妙了。思路:首先对于猪圈中初始猪的数量,这很好解决,直接从源点连一条容量为初始数量的边就可以了。首先想到的是将每一次顾客要买猪的时候建一个虚点,向汇点连边,容量为买猪的数量,然后开放的猪圈各自相邻的连边,容量为INFINFINF,然后每个顾客会买的猪圈就向后新建立虚点,连容量为INFI...原创 2018-10-10 14:50:11 · 154 阅读 · 0 评论