网络流专题
文章平均质量分 52
主要分享我对于网络流的经验与心得
SC.ldxcaicai
我很菜=_=
展开
-
bzoj1854: [Scoi2010]游戏(二分图匹配)
传送门二分图匹配菜题。题意:nnn个二元组(xi,yi)(x_i,y_i)(xi,yi),每个二元组可以选一个数总共nnn个数aia_iai,问将aia_iai排好序之后从111开始最多可以连续存在多少个自然数。代码:#include<bits/stdc++.h>#define ri register intusing namespace std;inline i...原创 2019-01-17 12:50:47 · 156 阅读 · 0 评论 -
2018.10.15 loj#6010. 「网络流 24 题」数字梯形(费用流)
传送门费用流经典题。按照题目要求建边。为了方便我将所有格子拆点,三种情况下容量分别为111,infinfinf,infinfinf,费用都为validi,jval_{id_{i,j}}validi,j。然后从源点向第一排的mmm个点连边,三种情况下容量都为111,费用都为0。然后从最后一排的m+n−1m+n-1m+n−1个点向汇点连边,三种情况下容量为111,infinfinf,i...原创 2018-10-15 11:57:37 · 207 阅读 · 0 评论 -
2018.10.15 loj#6013. 「网络流 24 题」负载平衡(费用流)
传送门费用流sb题。直接从sss向每个点连边,容量为现有物品量。然后从ttt向每个点连边,容量为最后库存量。由于两个点之间可以互相任意运送物品,因此相邻的直接连infinfinf的边就行了。代码:#include&lt;bits/stdc++.h&gt;#define N 205#define M 50005using namespace std;inline int rea...原创 2018-10-15 11:22:42 · 195 阅读 · 0 评论 -
2018.10.14 loj#6012. 「网络流 24 题」分配问题(费用流)
传送门费用流水题。依然是照着题意模拟建边就行了。为了练板子又重新写了一遍费用流。代码:#include<bits/stdc++.h>#define N 305#define M 90005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch)...原创 2018-10-14 16:16:44 · 186 阅读 · 0 评论 -
2018.10.14 loj#6011. 「网络流 24 题」运输问题(费用流)
传送门费用流入门题。直接按照题意模拟。把货物的数量当做容量建边。然后跑一次最小费用流和最大费用流就行了。代码:#include&lt;bits/stdc++.h&gt;#define N 305#define M 90005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while...原创 2018-10-14 15:53:40 · 248 阅读 · 0 评论 -
2018.10.14 loj#6003. 「网络流 24 题」魔术球(最大流)
传送门网络流好题。这道题可以动态建图。不难想到把每个球iii都拆点成i1i_1i1和i2i_2i2,每次连边(s,i1),(i2,t)(s,i_1),(i_2,t)(s,i1),(i2,t),如果(u,v)(u,v)(u,v)可以匹配的话就连边(u1,v2)(u_1,v_2)(u1,v2),然后用最大流检验,如果能流动说明不用加柱子,否则需要新加一个柱子。题目还要求输出方案。...原创 2018-10-14 15:18:23 · 168 阅读 · 0 评论 -
2018.10.13 bzoj1834: [ZJOI2010]network 网络扩容(最大流+费用流)
传送门网络流水题啊。第一问直接放心跑最大流(本来还以为有什么tricktricktrick)。第二问就直接把原来的边(u,v,c,w)(u,v,c,w)(u,v,c,w)变成(u,v,c,0)(u,v,c,0)(u,v,c,0)和(u,v,inf,w)(u,v,inf,w)(u,v,inf,w),然后把ttt拆点限制流量跑费用流就行了。代码:#include<bits/stdc+...原创 2018-10-13 23:37:54 · 99 阅读 · 0 评论 -
2018.10.13 bzoj1070: [SCOI2007]修车(费用流)
传送门费用流经典题目。自我感觉跟TheWindy′sThe Windy&amp;#x27;sTheWindy′s很像。利用费用提前计算的思想来建图就行了。代码:#include&lt;bits/stdc++.h&gt;#define N 1005#define M 100005using namespace std;inline int read(){ int ans=0;...原创 2018-10-13 22:53:46 · 113 阅读 · 0 评论 -
2018.10.13 bzo1934: [Shoi2007]Vote 善意的投票(最小割)
传送门最小割定义题。按照题意建边就行了。考虑把冲突变成把aaa选入不与自己匹配的集合所需要付出的代价。然后跑最小割就行了。代码:#include<bits/stdc++.h>#define N 305#define M 180005using namespace std;inline int read(){ int ans=0; char ch=getchar...原创 2018-10-13 13:32:58 · 111 阅读 · 0 评论 -
2018.10.11 bzoj4819: [Sdoi2017]新生舞会(01分数规划+费用流)
传送门01分数规划水题。没想到SDOI竟然考模板题233.题目上连01分数规划的式子都列好了简直是赤裸裸的挑衅啊。移项之后直接上01分数规划+费用流检验就行了。代码:#include<bits/stdc++.h>#define N 305#define M 100005using namespace std;inline int read(){ int ans=...原创 2018-10-11 20:24:47 · 161 阅读 · 0 评论 -
2018.10.11 NOIP训练 没有上司的舞会(最长反链)
传送门最长反链板题。直接floyd传递闭包之后求匹配就行了。代码:#include<bits/stdc++.h>#define N 505#define M 100005#define inf 0x3f3f3f3fusing namespace std;int n,m,s,t,cnt=0,first[N],d[N];bool mp[N][N];struct No...原创 2018-10-11 16:20:33 · 195 阅读 · 0 评论 -
2018.10.11 bzoj1391: [Ceoi2008]order(最小割)
传送门最小割入门题。注意直接memsetmemsetmemset时间会爆炸。代码:#include<bits/stdc++.h>#define N 5005using namespace std;const int M=1200*1200*3;inline int read() { char ch=getchar(); int i=0; while(!isdigi...原创 2018-10-11 16:13:55 · 145 阅读 · 0 评论 -
2018.10.11 bzoj3894: 文理分科(最小割)
传送门最小割经典题目。题目让我们求最大的贡献。那我们先考虑加上全部的贡献,然后求出最小的需要丢掉的贡献。那么这个时候,如果没有限制就已经是最小割的典型模型了。即直接建边(s,posi,j,arti,j),(posi,j,t,arti,j)(s,pos_{i,j},art_{i,j}),(pos_{i,j},t,art_{i,j})(s,posi,j,arti,j),(posi,j...原创 2018-10-11 14:36:17 · 199 阅读 · 0 评论 -
2018.10.11 bzoj1458: 士兵占领(最大流)
传送门最大流简单题。正向做不是很好做。考虑反过来求出最多可以删去几个点。这时可以定义行列每匹配一个表示删去了一个点。然后利用原题的限制定义容量就可以了。代码:#include<bits/stdc++.h>#define N 205#define M 200005using namespace std;inline int read(){ int ans=0;...原创 2018-10-11 11:24:38 · 161 阅读 · 0 评论 -
2018.10.11 bzoj1877: [SDOI2009]晨跑(费用流)
传送门日常费用流水题。直接按照题意模拟求一下最小费用最大流就行了。注意是点不能重合因此需要拆点。代码:#include<bits/stdc++.h>#define N 505#define M 20005using namespace std;struct edge{int v,next,c,w;};int n,m;inline int read(){ int...原创 2018-10-11 08:17:28 · 140 阅读 · 0 评论 -
2018.10.10 bzoj1497: [NOI2006]最大获利(最大权闭合子图)
传送门最大权闭合子图入门题。把点的花费看成负权值,跟汇点连边:(i,pi)(i,p_i)(i,pi)=>(i,t,pi)(i,t,p_i)(i,t,pi)对于边(u,v,w)(u,v,w)(u,v,w),连(s,newnode,w),(newnode,u,inf),(newnode,v,inf)(s,newnode,w),(newnode,u,inf),(newnode,v,in...原创 2018-10-10 22:03:41 · 295 阅读 · 0 评论 -
2018.10.10 poj3014 Asteroids(最小点覆盖)
传送门最小点覆盖板子题。直接把行列都看作一排点,有障碍就连边,然后跑最小点覆盖就行了。代码:#include<queue>#include<cstring>#include<iostream>#include<cstdio>#define N 10005using namespace std;inline int read(){...原创 2018-10-10 20:59:04 · 175 阅读 · 0 评论 -
2018.10.10 bzoj1565: [NOI2009]植物大战僵尸(最大权闭合子图+拓扑排序)
传送门由题可以得出一些关系。如果对于同一行的相邻两个格子(i,j),(i,j+1)(i,j),(i,j+1)(i,j),(i,j+1),那么前者是后者的后继。如果对于两个格子A(a,b),B(c,d)A(a,b),B(c,d)A(a,b),B(c,d),如果AAA保护BBB,那么BBB是AAA的后继。然后可以发现如果以这样的方式建图会产生环。并且由条件知整个环都不能选。因此我们先在...原创 2018-10-10 20:40:58 · 163 阅读 · 0 评论 -
2018.10.10 bzoj3144: [Hnoi2013]切糕(最小割)
传送门网络流好题。首先考虑没有限制的情况。这个时候每个位置求解是独立的。其实可以直接贪心求最小值。但也可以用最小割来求。大概建图就是这样的:考虑加入限制,那么直接暴力枚举给两个不能同时选的节点连一条容量为infinfinf的边就行了。这样需要付出infinfinf的代价才能让这两个节点同时被选。代码:#include<bits/stdc++.h>using n...原创 2018-10-10 19:16:04 · 281 阅读 · 0 评论 -
2018.10.10 loj#6002. 「网络流 24 题」最小路径覆盖(最大流)
传送门一道求最小路径覆盖的板子题。可以转化为求二分图的最大匹配。如何转化呢?在没有边的时候显然最小路径覆盖数等于点数。假设当前加入一条边(u,v)(u,v)(u,v)。相当于匹配了两条路径,于是假设现在匹配了kkk次,那么只需要n−kn-kn−k条路径。代码:#include<bits/stdc++.h>#define N 505#define M 20005u...原创 2018-10-10 16:00:09 · 201 阅读 · 0 评论 -
2018.10.10 poj1149 PIGS(最大流)
传送门最大流好题。每次处理完之后相当于合并几个猪圈到一个新点上。对于每个猪圈iii记录一个lastilast_ilasti表示iii最新一次处理完之后到的新点。这时如果一个人jjj允许去猪圈iii只需要跟lastilast_ilasti连边就行了。代码(空间瞎开的):#include<iostream>#include<cstdio>#include&...原创 2018-10-10 14:59:24 · 95 阅读 · 0 评论 -
2018.09.27 codeforces1045A. Last chance(线段树优化建图+最大流)
传送门看完题应该都知道是网络流了吧。但是第二种武器直接建图会gg。因此我们用线段树优化建图。具体操作就是,对于这m个人先建一棵线段树,父亲向儿子连容量为inf的边,最后叶子结点向对应的人连容量为1的边。这样给第二种武器对应连边的时候直接给区间连边就行了。对于操作三,我们直接贪心流掉两个人,剩下的一个人不流就行了。代码:#include<bits/stdc++.h>#d...原创 2018-09-27 14:10:34 · 505 阅读 · 0 评论 -
2018.08.28 九份的咖啡店(费用流)
描述深绘里在九份开了一家咖啡店。当然如何调配咖啡成了她每天的头等大事。 我们假设她有 n 种原料,第 i 种原料编号为 i,而调配一杯咖啡则需要选择这里面的若干种来兑在一起。 不过有些原料不能同时调兑在同一杯里。如果两个编号为 i, j 的原料,当且仅当 i 和 j 互质时,它们才能被兑在同一杯里。 现在深绘里想知道,如果她用这 n 种原料来调兑一杯咖啡,那么这杯咖啡所使用的原料编号之和最...原创 2018-08-28 20:06:50 · 310 阅读 · 0 评论 -
2018.08.20 loj#116. 有源汇有上下界最大流(模板)
传送门 貌似就是转成无源汇,然后两遍最大流搞定?其实第二遍跑最大流是自动加上了第一次的答案。代码:#include&amp;lt;bits/stdc++.h&amp;gt;#define N 100005#define M 2000010#define inf 0x3f3f3f3fusing namespace std;inline int read(){ int ans=0; ...原创 2018-08-20 21:28:26 · 183 阅读 · 0 评论 -
2018.08.20 loj#117. 有源汇有上下界最小流(模板)
传送门 这题真有意思。。。 先是有一个点T的我怀疑人生。 然后学大佬们封装了我的dinic就莫名其妙的过了??? 所以说锅给谁好呢? 给dinic吧。。。解法就是先求出一段可行流,然后从t到s加一条容量为inf的边将能缩回去的都缩回去。代码:#include<bits/stdc++.h>#define ll long long#define inf 0x3f3...原创 2018-08-20 21:25:40 · 315 阅读 · 0 评论 -
2018.08.20 bzoj1143: [CTSC2008]祭祀river(最长反链)
传送门 一道简单的求最长反链。 反链简单来说就是一个点集,里面任选两个点u,v都保证从u出发到不了v且v出发到不了u。 链简单来说就是一个点集,里面任选两个点u,v都保证从u出发可以到达v或者v出发可以到达u。 可以证明最小链覆盖与最长反链是补集关系,因此只用求最小链覆盖,而最小链覆盖显然可做。代码:#include&amp;lt;bits/stdc++.h&amp;gt;#define N...原创 2018-08-20 14:51:11 · 139 阅读 · 0 评论 -
2018.08.20 loj#115. 无源汇有上下界可行流(模板)
传送门 又get到一个新技能,好兴奋的说啊。 这是一道无源汇有上下界可行流的模板题,然而多组数据坑了我好久的说。。。 其实这东西也不难,就是将下界变形而已。 准确来说,就是对于每个点,我们算出会从它那里强制流入与流出的流量,然后与超级源点,汇点连边,这样我们就成功去掉了下界的限制,上界从r变成了r-l,这样子跑一边最大流,看一下是不是每一条强制流完的边都流完了,如果有边没有流完,说明无法保...原创 2018-08-20 13:35:00 · 225 阅读 · 0 评论 -
2018.08.19 洛谷P1402 酒店之王(最大流)
传送门 最大流入门题,把人拆点即可。 代码:#include&lt;bits/stdc++.h&gt;#define N 505using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar(); while(isd...原创 2018-08-19 21:32:16 · 224 阅读 · 0 评论 -
2018.08.18 NOIP模拟 snow(最大流)
Snow 题目背景 SOURCE:NOIP2015-SHY4题目描述 有一天,TT 要去 ABC 家。ABC 的大门外有 n 个站台,用 1 到 n 的正整数编号,TT 需要对每个站台访问恰好一定次数以后才能到 ABC 家。站台之间有 m 个单向的传送门,通过传送门到达另一个站台不需要花费任何代价。而如果不通过传送门,TT 就需要乘坐公共汽车,并花费 1 单位的钱。值得庆幸的是,任意两个...原创 2018-10-11 23:16:58 · 228 阅读 · 0 评论 -
2018.08.02 洛谷P3355 骑士共存问题(最小割)
传送门 这题让我联想到一道叫做方格取数问题的题,如果想使摆的更多,就要使不能摆的更少,因此根据骑士的限制条件建图,求出至少有多少骑士不能摆,减一减就行了。 代码:#include&lt;bits/stdc++.h&gt;using namespace std;int n,m,tot=0,d[500005],dx[8]={1,1,-1,-1,2,2,-2,-2},dy[8]={2,-...原创 2018-08-02 21:57:11 · 2780 阅读 · 0 评论 -
POJ3281 Dining(最大流)
Dining Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21578 Accepted: 9545DescriptionCows are such finicky eaters. Each cow has a preference for certain foods and drinks,...原创 2018-06-27 13:48:07 · 138 阅读 · 0 评论 -
Dual Core CPU(最小割)
Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 26136 Accepted: 11270 Case Time Limit: 5000MS DescriptionAs more and more computers are equipped with dual c...原创 2018-06-27 14:19:38 · 1095 阅读 · 0 评论 -
Firing(最大权闭合子图)
Firing Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 11558 Accepted: 3494 DescriptionYou’ve finally got mad at “the world’s most stupid” employees of yours and decided t...原创 2018-06-27 15:25:08 · 224 阅读 · 0 评论 -
BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)
4443: [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec Memory Limit: 128 MB Description 小凸和小方是好朋友,小方给小凸一个N*M(N&lt;=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最小值是多少。 Input 第一行给出三个整数N,M,K 接下来...原创 2018-06-30 23:43:58 · 206 阅读 · 0 评论 -
2018.07.06 POJ1273 Drainage Ditches(最大流)
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Description Every time it rains on Farmer John’s fields, a pond forms over Bessie’s favorite clover patch. This means that the clover...原创 2018-07-06 10:51:07 · 134 阅读 · 0 评论 -
2018.07.06 POJ2536 Gopher II(二分图匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Description The gopher family, having averted the canine threat, must face a new predator. The are n gophers and m gopher holes, each at d...原创 2018-07-06 13:00:49 · 170 阅读 · 0 评论 -
2018.07.06 POJ1698 Alice's Chance(最大流)
Alice’s Chance Time Limit: 1000MS Memory Limit: 10000K Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances will come now, for several filmmakin...原创 2018-07-06 14:03:50 · 176 阅读 · 0 评论 -
2018.07.06 POJ 1459 Power Network(多源多汇最大流)
Power Network Time Limit: 2000MS Memory Limit: 32768K Description A power network consists of nodes (power stations, consumers and dispatchers) connected by power transport lines. A node u may...原创 2018-07-06 14:57:14 · 141 阅读 · 0 评论 -
2018.07.06 洛谷P2936 [USACO09JAN]全流Total Flow(最大流)
P2936 [USACO09JAN]全流Total Flow 题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 &lt;= N &lt;= 700) water pipes on the farm that connect the well to the...原创 2018-07-06 15:29:32 · 270 阅读 · 0 评论 -
最小费用最大流模板
最小费用最大流是指整个容量网络在保证流量最大的情况下使花费的费用最小,所以说与求最大流的思想有所差异。我们知道,求最大流的思想是每次找一条增广路进行贪心直到贪不动为止,但是对于最小费用最大流这个问题来说,我们最后求得的一定是最大流,因此我们仍然每次贪心,只需保证费用最小即可。于是我们使用SPFASPFASPFA而不是bfsbfsbfs来找最短增广路,我们在进行SPFASPFASPFA算法的...原创 2018-06-27 12:07:10 · 194 阅读 · 0 评论