![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络流
sss
crazy morning
去西之西处,驾驭长风
展开
-
CF1615H Reindeer Games
题目题目思路这题思路还是很妙的,考虑把所有的aaa抽象成n个点,然后进行二分答案。设现在这个点集为VVV,我们本质上在二分这个点集所有点的最终取值。那么接下来,我们要解决的问题就是,如何对点集进行二分。可以这样做,新建一个源点和一个汇点,然后开始建模。对于点集中每个点的初始值,我们将其和mid比较,大的与t连容量为1的边,小的与s连容量为1的边。原图的约束条件在建模时连容量inf的边。接下来跑一次网络流,就会得到一个残量网络。现在研究一下这个残量网络的性质。如果2个非源汇点之间有边,说原创 2021-12-26 11:06:41 · 664 阅读 · 0 评论 -
P2517 [HAOI2010]订货
题目题目思路正常费用流s连所有月份,容量inf,费用为进货费用。每一个月份向下一个连边(最后一个除外),容量S,费用为m。每一个月向t连边,容量为卖货量,费用0(免费卖货)code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<qu原创 2021-06-19 15:10:33 · 86 阅读 · 0 评论 -
P2223 [HNOI2001]软件开发
题目题目思路HN省选(海南?湖南?河南?)出重题……where’re your faces?这里只需要把明天改成今天即可。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<queue>#include<deque&原创 2021-06-19 09:44:56 · 94 阅读 · 0 评论 -
P2488 [SDOI2011]工作安排
题目题目思路观察到题目中的一个美好性质:Wi,jW_{i,j}Wi,j随j递增。我们是spfa贪心求解,所以我们可以这样建边:s到每个工作连容量CiC_iCi,费用0的边。每个工作和人按给的可达矩阵建容量1e8(inf),费用0的边。每个人向t连容量为分段长度,费用为分段愤怒的边。Wi,jW_{i,j}Wi,j随j递增可以保证我们在Wi,jW_{i,j}Wi,j被流过时,Wi,j−1W_{i,j-1}Wi,j−1一定被流满了。接下来Dinic+spfa。code:#inclu原创 2021-06-19 08:53:48 · 119 阅读 · 0 评论 -
P2762 太空飞行计划问题
题目题目思路显然网络瘤。建超级源,超级汇。超级源连线实验,流量为获利。实验连器材,流量inf。器材连超级汇,流量为费用。考虑最小割。则总收益-最大流为答案。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<queue&g原创 2021-06-18 20:49:08 · 62 阅读 · 0 评论 -
P2754 [CTSC1999]家园 / 星际转移问题
题目题目思路拆点……拆到怀疑人生的破题目code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int n,m,s,t,x[13*20*5+20],y,tot=2,head[1000005],dep[1000005],l,r,u[1000005],fa[1000原创 2021-03-18 20:32:24 · 88 阅读 · 0 评论 -
P2763 试题库问题
题目题目思路显然又是一道恶心OIer喜闻乐见的拆点+输出方案。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<queue>#include<deque>using namespace std;long lo原创 2021-03-10 21:28:30 · 86 阅读 · 0 评论 -
P3355 骑士共存问题
题目题目思路显然最小割套路,不解释了code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;long long n,m,s,t,x,y,tot=2,head[400001],dep[400001],l,r,u[400001],ss,r2;long long w,原创 2021-03-10 21:08:15 · 96 阅读 · 0 评论 -
P2774 方格取数问题
题目题目思路其实很显然是最小割板子,我们把点分为2个集合,其中不能同时被选的点连边,然后用总数来减就是结果。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int n,m,s,t,x,y,tot=2,head[20001],dep[20001],l,r,u原创 2021-03-10 21:07:12 · 49 阅读 · 0 评论 -
P4722 【模板】最大流 加强版 / 预流推进
题目题目思路预流推进板子。Dinic,EK,FF都是同一种思想,即撤销,该算法也不例外,不过该算法的思想是和ISAP一样引入高度的概念,在过程中对于每个节点把流堆满,每个点里存了超额流,只要网络中只有s,t的超额流不为0,即为一组解。code:#include<iostream>#include<stack>#include<cstdio>#include<cstring>#include<algorithm>#include原创 2021-03-06 11:52:41 · 155 阅读 · 0 评论 -
P3254 圆桌问题
题目题目思路显然是一道不用拆点的题目(真香),一个网络流判断是否有解,然后再枚举代表的出边,为0则输出对应圆桌。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<queue>#include<deque>usi原创 2021-03-06 07:32:50 · 127 阅读 · 0 评论 -
P1402 酒店之王
题目题目思路就是拆点+建图啊(注意每个点对应的点是什么,不然调半天)code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmath>#include<queue>#include<deque>using namespace std;long原创 2021-03-05 18:18:18 · 67 阅读 · 1 评论 -
P1231 教辅的组成
题目题目思路啊,又是烦人的拆点,其实网络瘤一堆题都是拆点,本题显然要把书,练习册(53),答案(学生的福音)分开,但是,书作为中转的地方,是具有唯一性的,不能2本53都配同一本书,这时我们还需要用拆点思想保障书是唯一的。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cma原创 2021-03-04 21:03:28 · 97 阅读 · 1 评论 -
P3171 [CQOI2015]网络吞吐量
题目题目思路啊又是一道拆点,想了解大概思想可以看我的这篇博客,另外显然我们能走的边只有dis[x]+e[x][y]=dis[y]dis[x]+e[x][y]=dis[y]dis[x]+e[x][y]=dis[y]的边。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cmat原创 2021-03-04 20:40:01 · 82 阅读 · 1 评论 -
P1345 [USACO5.4]奶牛的电信Telecowmunication
题目题目思路本题是最小割点模板,不知道大家有没有见过最小割边模板,那个是个网络瘤,作为网络瘤患者忠实爱好者,我们可以通过拆点把最小割点变成最小割边,相当于把x拆成x和x+n2个点,一个只有入边,一个只有出边,从只有出边的点向只有入边的点连一个容量为1的单向边,原来的边容量为inf。code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include原创 2021-03-04 20:05:24 · 58 阅读 · 1 评论 -
P2740 [USACO4.2]草地排水Drainage Ditches
题目题目思路其实还是一道最大流板子,使用Dinic算法解决,注意输入顺序,不知道DINIC算法戳这里code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int n,m,s,t,x,y,tot=2,head[201],dep[201],l,r,u[201],r2原创 2021-03-03 20:38:49 · 85 阅读 · 1 评论 -
P1343 地震逃生
题目题目思路那么这道题就是一道板子题,使用Dinic算法是可以AC的,它比模板只是多了一个除法和一个无解特判,Dinic解法详见我的博客code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>using namespace std;int n,m,s,t,x,y,tot=2,head[2001],dep原创 2021-02-19 11:10:34 · 77 阅读 · 0 评论 -
P3376 【模板】网络最大流
题目题目思路真是神奇,一个初一生智推最大流(初一巨爷请忽略其实是这么考虑,最大流的解法是由暴力推出来,暴力肯定会TLE,所以需要优化。这时我们要理解最大流算法的精髓:撤销,即建反边大多数人对于建反边这个操作不甚理解,其实它就是所谓的撤销思路,请看下图:这是原图,其中蓝点为s,黄点为t。根据输入顺序不同,有可能第一次搜到的是这样的:显然这不是最优解,dfs可以求出最优解,但是需要通过回溯取消后面的边来求,费时。那么怎样才不费时呢,回溯是一种取消,但是我们可以通过建反边来撤销,这样就不原创 2021-02-19 11:01:18 · 123 阅读 · 0 评论 -
P3980 [NOI2008] 志愿者招募
题目题目思路为啥志愿者要钱啊看到题目盲猜是要按天数来跑。可以发现,如果没有志愿者,网络流后所有天数之间边的容量会被填至mx−aimx-a_imx−ai(mx为aia_iai的最大值),我们人工加入一个mx为inf,显然这时我们还需要边把t补到inf。那么我们可以这样建边:s到Day1有容量inf,费用0的边。Dayn+1到t有容量inf,费用0的边(n+1即人工加入的mx)每一天到后一天,有容量inf-aia_iai,费用0的边。那么志愿者怎么办?首先边肯定要带权(废话),其次按原创 2021-03-23 20:46:44 · 105 阅读 · 0 评论 -
P4014 分配问题
题目题目思路最大费用最大流和最小费用最大流板子code:#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;int n,m,s,t,x,y,tot=2,head[5001],dep[5001],ans2,fy;bool book[5001];long long w,a原创 2021-03-10 21:10:12 · 72 阅读 · 0 评论 -
P1251 餐巾计划问题
题目题目思路啊哈,本题实质上是拆点+MCMF,我们把明天拆成早上和晚上,按照题意建边(不详细描述,见代码),跑MCMF即可。code:#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<cstring>using namespace std;int n,s,t,x,y,tot=2,head[5001],dep[5001],fy原创 2021-03-04 19:44:20 · 74 阅读 · 1 评论 -
P4016 负载平衡问题
题目题目思路《惊!网络瘤24题里有dp》——OI日报小学5年级时,这个拆环dp用时1周,如今竟是网络瘤,是我太年轻我们考虑建2个新点s和t,对于每一个仓库,如果该运出就从s连一条容量为运出数量,费用0的边,该运入就向t连一条容量为运入数量,费用0的边,仓库之间按题意,连容量inf,费用1的双向边。接下来就是最小费用最大流。code:#include<iostream>#include<cstdio>#include<algorithm>#includ原创 2021-03-03 21:00:20 · 72 阅读 · 1 评论 -
P3381【模板】最小费用最大流
题目题目思路显然,Dinic不适合解决费用流问题,因为它进行分层式的优化,其实我们去掉这重优化就是EK算法。接下来,使用EK算法也不能解决费用流,但是我们可以把bfs替换为spfa,使用spfa来判断增广路是否存在,因为EK算法的思路有一个撤销的理念,所以我们可以用spfa求一条单价最小的增广路,然后把增广路加上去(一种贪心),因为可以撤销,所以这就是可撤销贪心的思路。code:#include<iostream>#include<cstdio>#include<原创 2021-03-03 20:34:33 · 140 阅读 · 1 评论