![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络流
Self-Discipline
在校大学生
展开
-
POJ3422 K方格取数(最大费用最大流 + 拆点)
题意:有一个n*n的矩阵,格子中的元素是费用,KaKa从左上角开始出发要到达右下角,但是他只能向下走或者向右走,且走过的格子赋值为0,可以走K次,问K次后KaKa能获得的最大费用是多少?分析:二方格取数问题的扩展,非常好的一道建图题,应用了很多技巧,详见《算法竞赛进阶指南》P449-450。代码:#include<iostream>#include<cstdio&...原创 2019-08-02 11:18:33 · 203 阅读 · 0 评论 -
zoj3229 Shoot the Bullet(有源汇有上下界的最大流)
题意:一个屌丝给m个女神拍照,计划拍照n天,每一天屌丝给给定的C个女神拍照,每天拍照数不能超过D张,而且给每个女神i拍照有数量限制[Li,Ri],对于每个女神n天的拍照总和不能少于Gi,如果有解求屌丝最多能拍多少张照,并求每天给对应女神拍多少张照;否则输出-1。分析:要求解这个最大流,首先得保证上下界可行流有解。新增一个超级源点ss,超级汇点tt。点[1,n]视作n天,[n+1,n+m]视作m...原创 2019-06-20 19:48:17 · 240 阅读 · 0 评论 -
sgu-194-Reactor Cooling(无源汇有上下界最大流)
题意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。分析:这个模型比较特别,没源又没汇,而且每条弧除了有容量c之外,还多了一个下界b。那就分析一下该...原创 2019-06-20 15:09:59 · 264 阅读 · 0 评论 -
zoj 2676 网络流+01分数规划
题意:有一个n个点的网络,其中有m条光缆(所有的点都被连接,任意两个点之间最多有一条,不存在连接自身的),每条光缆有一定的价值,网络中1为起点,n为终点,现在要求找出一些光缆能分割开1到n,使它们不能相互通信,并且要求花费的和除以光缆数的值最小。输出选择的光缆的编号。分析:从问题中可以看出一定是0-1分数规划的题目,假设选出光缆的集合M,M为原图的一个割,光缆si∈M,价值为ci,数量k = ...原创 2019-06-20 11:22:18 · 207 阅读 · 0 评论 -
HDU 3061 Battle(最小割----最大权闭合图)
题意:Problem Description由于小白同学近期习武十分刻苦,很快被晋升为天策军的统帅。而他上任的第一天,就面对了一场极其困难的战斗:据侦查兵回报,前方共有N座城池,考虑到地势原因,最终得到一个结论:攻占某些城池之前必须攻占另外一些城池。事实上,可以把地图看做是一张拓扑图,而攻占某个城池,就意味着必须先攻占它的所有前驱结点。小白还做了一份调查,得到了攻占每个城池会对他的兵力...原创 2019-06-20 10:12:07 · 203 阅读 · 0 评论 -
最大权闭合子图
闭合图:对于一个有向图G,存在点集合V,任取点u属于V,u的出边的另一个点也属于V,则为闭合图。最大权闭合子图:当每个点有一个权值w(有正有负),点权和最大的闭合图为最大权闭合子图。如图:最大权闭合子图为点集{3,4,5},最大权为7+0-3=4。求解方法:网络流。建立超级源点s,超级汇点t。所有点权为正数的点i,建边 s->i,容量为点权。所有点权为负数的点...原创 2019-06-20 09:54:43 · 268 阅读 · 0 评论 -
二分图点权最大独立集和二分图最小点权覆盖集
二分图点权最大独立集:带点权二分图G中的一个子集V,其中一条边的两个端点不能同时属于V,且V中点权和最大。点覆盖集:无向图G的一个点集,使得该图中所以边都至少有一个端点在该集合内。形式化的定时意思点覆盖集为V'∈V,满足对于所有的(u,v)∈E,都有u属于V'或v属于V'成立,即至少一个成立。形象的说是若干点“覆盖”住了与他们邻接的边。这些边恰好组成了原边集。最小点覆盖集: 在无向图G...原创 2019-06-20 09:39:35 · 637 阅读 · 0 评论 -
CF 808F - Card Game 二分图最大点权独立集 网络流 最小割
题意:给你一些卡片,每个卡片有价值,魔法值,等级。现在要你组成一个卡组,使得卡组里面任意两个数魔法值相加不是质数,并且价值之和大于k。问你需要达到的最低等级,你可以使用等级小于等于你自己等级的卡片。题解:如果我们将加起来为素数的任意两个数连边,那么我们就是要求一个独立集,使得点权之和大于k。而且我们发现,两数相加为质数,一定是一个奇数,一个偶数(除了两个1相加)的二分图。1的问题怎么解决?由...原创 2019-06-20 09:22:40 · 297 阅读 · 0 评论 -
BZOJ3894 文理分科(最小割)
题意:文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过)小P所在的班级要进行文理分科。他的班级可以用一个n*m的矩阵进行描述,每个格子代表一个同学的座位。每位同学必须从文科和理科中选择一科。同学们在选择科目的时候会获得一个满意值。满意值按如下的方式得到:1.如果第i行第秒J的同学选择了文科,则他将获得art[i][j]的满意值,如果选择理科,将得到science[i]...原创 2019-06-19 23:46:31 · 242 阅读 · 0 评论 -
HDU-6532 Chessboard 2019广东省省赛B题(费用流)
题意:给出一张棋盘,其上一些位置上有一些棋子。现在又给出一些限制条件,如某行以下最多可以选取多少的棋子,某列以右最多可以选取多少棋子。每个棋子的位置按照一定的顺序给出,其顺序中的排名即是其价值,问可以达到的最大价值是多少。题解:费用流。离散化坐标,每行用一个点表示,每列也用一个点表示。表示第i-1行的点向表示第i行的点连边,容量为第i行及以后能拿的棋子数的上限,费用为0,同理表示相邻列的点两两...原创 2019-06-19 21:53:01 · 389 阅读 · 0 评论 -
SGU 176 有源汇上下界的最小流
题意:给出N个点,M条有向边,如果有向边的标号是1的话,就表示该边的上界下界都为容量,如果有向边的标号为0的哈,表示该边的下界为0,上界为容量,现在问,从1到N的最小流是多少,并输出每条边的流量。思路:首先,还是处理出所有的结点的入流-出流,然后连向超级源点S,超级汇点T,和无源无汇的那种情况相同,把源汇当成普通结点,先跑出最大流了,再添加边,再跑一次最大流,接着得到的(t1->s1)流...原创 2019-06-20 20:24:06 · 247 阅读 · 0 评论 -
网络流24题之 方格取数问题(最小割)
题意:题目描述在一个有 m*n 个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。输入输出格式输入格式:第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数。接下来的 m 行,每行有 n 个正整数,表示棋盘方格中的数。...原创 2019-06-20 21:17:44 · 474 阅读 · 0 评论 -
CH#17C 舞动的夜晚(最大流+强连通分量)
题意:L公司和H公司举办了一次联谊晚会。晚会上,L公司的N位员工和H公司的M位员工打算进行一场交际舞。在这些领导中,一些L公司的员工和H公司的员工之间是互相认识的,这样的认识关系一共有T对。舞会上,每位员工会尝试选择一名Ta认识的对方公司的员工作为舞伴,并且每位员工至多跳一支舞。完成的交际舞的数量越多,晚会的气氛就越热烈。顾及到晚会的气氛,员工们希望知道,哪些员工之间如果进行了交际舞,就会使整场晚...原创 2019-08-02 11:03:20 · 984 阅读 · 0 评论 -
UVALive - 3487 Duopoly(最小割)
题意:有两个公司A和B在申请一些资源,现在给出两个公司所申请的内容,内容包括价钱和申请的资源,现在你做为官方,你只能拒绝一个申请或者接受一个申请,同一个资源不能两个公司都拥有,且申请的资源不能只给部分,问:作为官方,你能得到的最大利益是多少。分析:这题的矛盾在于,同一个资源不能两家公司共享,既然如此的话,那就找出矛盾的申请,让他们之间连条线就可以了,容量为INF,设立源点,源点和A公司的申请相...原创 2019-06-18 17:19:31 · 128 阅读 · 0 评论 -
UVALive 3972 March of the Penguins (最大流+拆点)
题意:有一群企鹅,n块冰,给出每个企鹅的最大跳跃距离,再给出冰的坐标和上面存在的企鹅个数和允许跳跃的次数,问有哪些冰是可以将所有的企鹅汇聚起来的分析:对于每一块冰进行拆点,容量为允许跳跃次数,源点向这块冰连一条边,容量为这个冰的企鹅个数。然后n^2枚举冰与冰,如果它们之间的距离小于最大跳跃距离,就连一条边,容量为无穷,因为冰与冰之间不限制跳跃次数,单块冰才限制跳跃次数。最后跑最大流即可,跑完最...原创 2019-06-18 16:49:45 · 206 阅读 · 0 评论 -
uva 1161 Objective: Berlin (最大流+时序模型)
题意:你要从A地到B地去,并且最晚要在lt之前到达。现在给你m个航班信息,信息包括:起始地点,降落地点,载客上限,起飞时间,降落时间。中途转机要花费半小时的时间。问在lt之前,可以从A地到达B地的最多的游客数量。分析:首先最大流模板中是不考虑时间因素的,从一个点分别向不同的方向出发是同时的,所以不能以城市为最大流模板中的顶点。为了考虑时间因素,以航班为顶点,以城市为边,将同一个航班拆成两个点i与...原创 2019-06-18 16:17:13 · 150 阅读 · 0 评论 -
UVA11082 Matrix Decompressing(矩阵解压) 最大流
题意:对于一个R行C列的正整数矩阵,(1<=R,C<=20),设a[i]为前i行所有元素之和,b[i]为前i列所有元素之和,已知道R,C,和数组a,b,找一个满足条件的矩阵,矩阵中的元素必须是1~20之间的正整数,输入保证有解。分析:刘汝佳提供的解题思路是这样的:因为知道前 i 行所有元素之和 a[i ]以及前 j 列所有元素之和 b[i] ,那么就能计算出第 i 行所有元素之和以...原创 2019-06-18 15:15:26 · 431 阅读 · 0 评论 -
UVa11167 Monkeys in the Emei Mountain(网络流区间模型+输出方案)
题意:有n只猴子,每只猴子都有一组参数(v,a,b),表示这只猴子在时间段[a,b]之间必须要喝v个单位水,并且每个时间单位只能和一个单位水,每次至少喝一个单位。但是只有一个水池,并且这个水池最多只允许m只猴子同时喝水。问能否满足所有的猴子喝水,若能,输出任意一种可行的方案。分析:将每个猴子和每个喝水区间视作节点。将每只猴子向它对应的区间连弧,容量为该区间上能喝水的总单位数;从源点向每只猴子建...原创 2019-06-18 14:38:19 · 294 阅读 · 0 评论 -
UVA 11613 Acme Corporation 拆点+不确定流量费用流
题意:给出 I 和M个月和 的以下信息:mi, ni, pi, si, Ei,表示单位生产成本,最大产量,销售单价,当月最大销量,以及最大存储时间,当Ei=1时,最多只能存储到下个月,否则报废,其中 I 表示每单位元素存储一个月花费的代价。求最大利润。分析:将每个月建立两个点 ai,bi,从源点s连接到ai,容量为最大产量,费用为单位生产成本,从bi连接到汇点T,容量为最大销售量,费用为负的销...原创 2019-06-18 09:23:41 · 160 阅读 · 0 评论 -
UVA 10779 Collectors Problem(最大流)
题意:现在有包括了Bob在内的N个小朋友,M种游戏卡片,Bob可以和其他人交换卡片,除了Bob,每个人的交换原则都是只给出自己拥有大于1的卡片,接受自己没有的卡片。的问他最后有多少不同的卡片。 N<=10; M<=25;分析:用n-1个点表示除Bob之外的人,用m个点表示每个物品,再添加源点s和汇点t。从s向每个物品连边,容量为Bob拥有该物品的数量,表示Bob原始物品拥有情况。如...原创 2019-06-18 07:37:18 · 210 阅读 · 0 评论 -
网络流24题之骑士共存问题(最小割)
题意:题目描述在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击输入输出格式输入格式:第一行有 2 个正整数n 和 m (1<=n<=200, 0<=m<n2),分别表示棋盘的大小和障...原创 2019-06-20 21:43:19 · 673 阅读 · 0 评论 -
UVA 1349 Optimal Bus Route Design(最小权完美匹配)
题意:给出一个有向图,你需要让每一个点都恰好在一个环中,并且费用要最小。分析:要求每个点属于且仅属于一个圈,则由于在一个圈中的每个点必定存在后继,又由于每个点只能属于一个圈,所以每个点有且仅有一个后继时满足题意。联想到匹配问题,把每个点拆成i和i+n两个点,则对于每条边<i,j>转化为连边<i,j+n>,权值为该边权值,构成一新图。此图为一二分图,则最小费用即为最小权完美...原创 2019-06-19 16:10:58 · 893 阅读 · 0 评论 -
UVA 1658 - Admiral (拆点+最小费用流)
题意:n个地点m条边,有两个人要从1走到n,但是不能经过相同的地点(除了1和n),每条边都有一个权值,问两个人走到地点n花的总权值最小是多少。分析:每个点拆成入点出点,流量1费用为边权,拆成的两个点流量为1费用为0,除了源点和汇点流量为2。建图如下。总结:拆点法是解决节点容量的通用方法。代码:待补。...原创 2019-06-19 15:40:40 · 159 阅读 · 0 评论 -
2018 沈阳赛区网络预赛 F. Fantastic Graph 有上下界可行流
题意:一个二分图,左边有n个点,右边有m个点,一共有k条边分别连接左右两个点,问能否取这k条边中部分边,使得所有点的度数都在l~r范围内。分析:有上下界可行流。建图方法:建立一个附加源点ss和附加汇点tt,以及源点s汇点t。这里假设上界为r,下界为l。对于每条有上下界限制的<u,v>,题目中为<s,x>,<y,t>,做3条边(括号里为容量)&...原创 2019-06-07 11:21:37 · 101 阅读 · 0 评论 -
LA 4597 Inspection 路径覆盖
题意:给一个有向图,求最小路径覆盖并且输出路径,不过走过的路径可以重复走。分析:设d[ i ]为节点 i的入度-出度的值,如果路径不可重复走,那么最小路径覆盖就是所有d[ i ]为负数的和sum,不过路径是可以重复走的,那么有些边在不可重复走中只能走一次,但是在这题中可以走多次,这些边满足性质:起点u的d[ i ]>0,终点v的d[ i ]<0,那么就连接s-->u,v--...原创 2019-06-07 11:03:30 · 186 阅读 · 0 评论 -
UVA10806 Dijkstra, Dijkstra. 最小费用最大流
题意:一个无向图,每条边只能走一次,求1到n往返的最短距离,走不到就输出Back to jail。分析:每条边流量为1,费用为边权,双向边。建立源点,源点到1的流量为2,费用为0,表示进入2个流量,保证最大流不超过2,然后求源点到n的费用流,如果到源点到n的流量不是2的话,说明不通。如果流量是2的话,输出到n点的费用。其实最短路本身就是个流量为1的费用流。(一开始就在想最短路一次,然后去掉走过...原创 2019-06-07 10:42:09 · 224 阅读 · 0 评论 -
LA 2531 The K-League 加点+最大流
题意:n个队比赛,给出每个队当前的胜场和负场,给出接下来各队伍间比赛场数,求都有哪支队伍能够赢得冠军(可以并列)。分析:可以假设每个队接下来的比赛全胜,在看这支队伍是否能获胜。对于其他队伍之间的比赛来说,可以看成一个分配问题,即把接下来除假定队伍外,每场比赛的胜场分配给相应队伍,使得每个队伍获胜总场数不超过假设队伍。这样的话,添加一个源点,从源点向每场比赛连一条边,容量为比赛场数,然后从每场比...原创 2019-06-07 10:19:39 · 148 阅读 · 0 评论 -
UVALive 2957 Bring Them There 拆点+最大流
题意:现在有k个机子要从 s 运到 t ,点之间的路线有m条,双向边,每条边在同一天只能运一台机子(同一天从 u 到 v 或者 从 v 到 u,不能同时),每台机子需要一个飞船来运。输出把他们全都运送过去的最少天数,然后输出方案。分析:先拆点,假设需要 T 天,那么一个点就拆成 a0,、a1、a2、a3、...、aT,就是按照时间来拆点。然后连边,由于飞船在某一天能够停在原地,对于每个点那么就...原创 2019-06-07 09:39:12 · 240 阅读 · 0 评论 -
LA 3268 Jamie's Contact Groups 二分+最大流
题意:给出n个人和m个分组,每个人可以属于很多组,现在要求给出一组分组方案,使得分组后的结果中最大组尽量小,输出最后最大组中的人数。思路:从源点S连接一条弧到n个人,流量为1,代表每个人只能有一个选择,然后把每个人连接一条弧到这个人所属的组,流量为1,然后二分答案flow,把每个组引出一条弧到汇点T,流量为flow,表示最大组人数为flow,求最大流,如果最大流等于n,表示当前最少人数是小于或...原创 2019-06-07 08:59:04 · 2092 阅读 · 0 评论 -
UVA 11248 Frequency Hopping 求割边集
题意:给定一个有向网络,每条边均有一个容量。问是否存在一个从点1到点N,流量为C的流,如果不存在,是否可以恰好修改一条弧的容量,使得存在这样的流。思路:网络流板子题,用的刘汝佳的模板,先求一次最大流,如果中途就大于等于C或者结尾大于等于C,就直接输出,如果小于C,就需要修改最小割里的弧,依次把最小割里的弧加上C再求最大流与C去比较就行了。代码:#include<bits/std...原创 2019-06-06 16:36:44 · 195 阅读 · 0 评论 -
Magic Potion
题目:点击打开链接题意:n个人,m个怪物,k瓶药水,每个人可以打死对应的集合里面的一个怪物,一碰药水可以让一个人多打死一个怪物,每个人最多只能用一瓶药水,问最多能打死多少个怪物。分析:网络流建模问题,一种思路是:源点连人容量为1,人连怪物容量为1,怪物连汇点容量为1,源点连中转点容量为k,中转点连人容量为1。第二种思路是:从源点到英雄分别拉容量为1和2的边,跑两遍网络流,判断两次的大小和k的大...原创 2018-11-20 20:00:41 · 805 阅读 · 1 评论 -
最大流之Edmonds-Karp算法(模板)
传送门:点击打开链接 #include <iostream>#include <queue>#include <cstring>#include <cstdio>using namespace std;const int N = 210;const int INF = 0x7FFFFFFF;int n,m,map[N][N]...原创 2018-03-21 16:20:09 · 518 阅读 · 0 评论 -
hdu 6437 Videos 拆点+最小费用最大流
题意:给出n,每天有n个小时。有m种电影,每个电影有开始时间和结束时间,和01两种种类,k个人,每一部电影只能被一个人看,会获得一个快乐值wi,如果一个人连续看两部相同种类的电影,快乐值会消耗W,(先加上wi,再减去W)。如果两部电影的开始时间和结束时间是重合的,则可以连续看。题目保证所有的wi都大于等于W。分析:拆点,将每一部电影拆成 i 和 i+m 两个点,建立一条费用为 -wi,流量...原创 2019-06-07 18:40:21 · 201 阅读 · 0 评论 -
Our Journey of Dalian Ends (最小费用最大流)
题目:https://nanti.jisuanke.com/t/A1256题意:给定若干个城市,出发点为大连,目的地为西安,但是要求中途必须经过上海,并且图中每个城市只能经过一次,给出m条路(双向道路),走第i条路需要wi代价,求所有满足要求的方案中花费的最小代价,如果没有满足的方案,输出-1。思路:学到了网络流建图新姿势,如果需要经过中间点,则可以把起点和终点接入源点,中间点接入汇点。相...原创 2019-06-08 09:48:55 · 142 阅读 · 0 评论 -
uva753(最大流)
题意:有若干个电器设备需要不同的适配器才能接上电源,现在你要让尽可能多的电气设备接上电源。首先你手中有n个适配器和适配器的型号,再告诉你有m个电器和他们分别对应的适配器的型号,最后还有一个商店提供买不同型号的适配器转换器,转换是单向的A B表示能把A接口转换成B接口(就是原来需要用A适配器的现在可以用B适配器当然也可以用原来的不变)超市提供的转换器数量是没有限制的,可以无限买。分析:方法一...原创 2019-06-19 15:28:52 · 221 阅读 · 0 评论 -
UVa 1659 Help Little Laura 最大费用循环流
题意:平面上有m条有向线段连接了n个点。你从某个点出发顺着有向线段行走,给走过的每条线段涂一种不同的颜色,最后回到起点。你可以多次行走,给多个回路涂色(要么不涂色,要么就至少给一个回路上的边全部涂色)。可以重复经过一个点,但不能重复经过一条有向线段。如下图所示的是一种涂色方法(虚线表示未涂色)。每涂一个单位长度将得到X分,但每使用一种颜色将扣掉Y分。假设你拥有无限多种的颜色,问如何涂色才能使...原创 2019-06-19 10:43:03 · 258 阅读 · 0 评论 -
UVA 10735 混合图的欧拉回路判断以及输出路径(最大流)
题意:给出一个V个点E条边的混合图(有的是有向边,有的是无向边)求出它的一条欧拉回路,如果没有输出无解信息,输入保证忽略边的方向后图是连通的(V<=100, E<=500)。分析:按照往常的思维,遇到混合图,我们一般会把无向边拆成两条方向相反的有向边。但是在这里却行不通了,因为拆成两条有向边的话,就表示这个边能“在两个相反方向各经过一次”。而题意是这个边只能经过一次。复习欧拉...原创 2019-06-19 09:41:38 · 187 阅读 · 0 评论 -
UVA 1515 Pool construction(最小割)
题意:输入一个h行w列的字符矩阵,草地用“#”表示,洞用"."表示。你可以把草改成洞,每格花费为d,也可以把洞填上草,每格花费为f。最后还需要在草和洞之间修围栏,每条边花费为b。整个矩阵第一行/列和最后一行列必须是草。求最小花费。分析:首先把边界全部变为草并累积费用。设一源点s,一汇点t,将s与所有草连边(所有非边界草容量为D,代表将其分到洞集合所花费用;所有边界草容量为INF,代表边界草不...原创 2019-06-19 09:05:59 · 155 阅读 · 0 评论 -
LA3709 Hard Life(最大密度子图 01分数规划)
题意:给定一个无向图,要求ta的一个子图,使得子图中边数|E|与点数|V|的比值最大,即最大化:|E|/|V|分析:看到了比值形式,可以想到01分数规划,设F(L)=|E|−L∗|V|,如果F(L)>0,|E||V|>L,即存在一个答案大于L,二分一个答案L,现在的问题就是如果选出一个子图得到F(L)把图上的边变成点,作为X部,点作为Y部,源点向边连边,容量为边权(1)...原创 2019-06-18 21:57:49 · 579 阅读 · 0 评论 -
UVALive - 5095 Transportation(拆边+费用流)
题意:有n个点,m条边,每条边的容量为ci,费用为ai* x^2(x为流量,ai为所给系数)现在问能否将k个单位的货物从点1运输到点n,且费用最小。分析:首先要知道一个结论(1+3+...+(2n-1)=n^2),然后拆边,将每条边拆成ci条边,每条边的费用分别为ai * 1, ai * 3, ai * 5…容量都为1,在容量相同的情况下,会选择费用少的流,这样流过的边累加起来的费用刚好为...原创 2019-06-18 20:46:06 · 183 阅读 · 0 评论