有上下界网络流问题汇总

无源汇有上下界可行流

法一(据说适合点少边多的图):

建图方法

  • 首先建立附加源点ss和附加汇点tt
  • 对于原图中的边x->y,若限制为[b,c],那么连边x->y,流量为c-b
  • 对于原图中的某一个点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和
  1. 若d(i)>0,那么连边ss->i,流量为d(i)
  2. 若d(i)<0,那么连边i->tt,流量为-d(i)

求解方法

  • 在新图上跑ss到tt的最大流
  • 若新图满流,那么一定存在一种可行流
  • 此时,原图中每一条边的流量应为新图中对应的边的流量+这条边的流量下界

法二(据说适合点多边少的图):

建图方法

  • 首先建立一个源点ss和一个汇点tt,一般称为附加源和附加汇。
  • 对于图中的每条弧<u,v>,假设它容量上界为c,下界b,那么把这条边拆为三条只有上界的弧。
  1. 一条为<ss,v>,容量为b;
  2. 一条为<u,tt>,容量为b;
  3. 一条为<u,v>,容量为c−b。

(其中前两条弧一般称为附加弧。)

求解方法

  • 以ss为源点,以tt为汇点,对这张图跑最大流。
  • 如果所有的附加弧都满流,则原图有可行流。
  • 这时,每条非附加弧的流量加上它的容量下界,就是原图中这条弧应该有的流量。

理解方法

对于原图中的每条弧,我们把c−b称为它的自由流量,意思就是只要它流满了下界,这些流多少都没问题。

既然如此,对于每条弧<u,v>,我们强制给v提供b单位的流量,并且强制从u那里拿走b单位的流量,这一步对应着两条附加弧。

如果这一系列强制操作能完成的话,也就是有一组可行流了。

注意:这张图的最大流只是对应着原图的一组可行流,而不是原图的最大或最小流。

有源汇有上下界可行流

建图方法

  • 在原图中添加一条边t->s,流量为inf
  • 其余建图方法与无源汇有上下界可行流相同

求解方法

  • 同无源汇有上下界可行流
  • 弧<t,s>的流量就是原图的总流量

理解方法

有源汇相比无源汇的不同就在于,源和汇是不满足流量平衡的,那么连接<t,s>之后,源和汇也满足了流量平衡,就可以直接按照无源汇的方式建模。

注意:这张图的最大流只是对应着原图的一组可行流,而不是原图的最大或最小流。

有源汇有上下界最大流

建图方法

  • 同有源汇有上下界可行流

求解方法

  • 在新图上跑ss到tt的最大流
  • 若新图满流,那么一定存在一种可行流
  • 记此时∑f(s,i)=sum1 ,即此时t->s的最大流,也就是求反向边s->t的流量
  • 将t->s这条边拆掉,在新图上跑s到t的最大流
  • 记此时∑f(s,i)=sum2 ,即maxflow(s,t)
  • 最终答案即为sum1+sum2

理解方法

为什么要在已经有了流量的图上跑最大流?因为那张图保证了每条弧的容量下界,在这张图上跑最大流,实际上就是在容量下界全部满足的前提下尽量多得获得“自由流量”。

有源汇有上下界最小流

建图方法(常用的一种)

  • 按照有源汇可行流的方法建图,但是不要建立<t,s>这条弧

求解方法

  • 求ss->tt最大流
  • 连边t->s,inf
  • 求ss->tt最大流
  • 若满流,则存在可行流,答案即为边t->s,inf的实际流量

理解方法

在跑完有源汇可行流之后,弧<t,s>的流量就是原图的流量。

第一遍做的时候并无t->s这条边,所以s->t的流量已经尽力往其它边流了。

加上t->s这条边后,流过这条边的都是些剩余的流不到其他边的流量,从而达到尽可能减少t->s这条边上的流量的效果,即减小了最终答案。

注意:最小流判断是否有可行解的位置与时机与另外几种上下界网络流的不同!

有源汇有上下界费用流

法一(据说适合点少边多的图):

建图方法

  • 首先建立附加源点ss和附加汇点tt
  • 对原图中某边x->y,若限制为[b,c],费用为cost,那么连边x->y,流量为c-b,费用为cost
  • 对原图中某点i,记d(i)为流入这个点的所有边的下界和减去流出这个点的所有边的下界和
  1. 若d(i)>0,那么连边ss->i,流量为d(i),费用为0
  2. 若d(i)<0,那么连边i->tt,流量为-d(i),费用为0
  • 连边t->s,流量为inf,费用为0

求解方法

  • 跑ss->tt的最小费用最大流
  • 答案即为(求出的费用+原图中边的下界*边的费用)

法二(据说适合点多边少的图):

建图方法

  • 首先建立附加源ss和附加汇tt。
  • 对于图中的每条弧<u,v>,假设它容量上界为c,下界b,费用为cost那么把这条边拆为三条只有上界的弧。
  1. 一条为<ss,v>,容量为b,费用为0;
  2. 一条为<u,tt>,容量为b,费用为0;
  3. 一条为<u,v>,容量为c−b,费用为cost。

求解方法

  • 跑从ss到tt的费用流
  • 答案即为(求出的费用+原图中边的下界*边的费用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个迄今为止最快的并发键值存储库FASTER诞生

FASTER在过去十年中&#xff0c;云中的数据密集型应用程序和服务有了巨大的增长。数据在各种边设施&#xff08;例如&#xff0c;设备&#xff0c;浏览器和服务器&#xff09;上创建&#xff0c;并由云应用程序处理用来获得数据价值或做出决策。应用程序和服务可以处理收集的数…

【斜率优化】仓库建设(luogu 2120)

仓库建设 luogu 2120 题目大意 有一个斜坡&#xff0c;上面有n个工厂&#xff08;山顶是1&#xff0c;山脚是nnn&#xff0c;工厂都是漏填&#xff09;&#xff0c;上面有pip_ipi​个货物&#xff0c;和工厂1的距离为x1x_1x1​ 现在有一场大雨&#xff0c;你可以在某些工厂处…

牛客网【每日一题】4月30日题目精讲 换个角度思考

链接&#xff1a; 文章目录题目描述题解&#xff1a;主席树做法&#xff1a;代码&#xff1a;树状数组&#xff1a;更扯淡的方法&#xff01;&#xff01;&#xff01;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言…

三元环计数四元环计数

三元环计数 问题 给出一张n个点m条边的无向图&#xff0c;问图中有多少个三元组{ u , v , w } &#xff0c;满足图中存在 { (u,v) , (v,w) , (w,u) } 三条边。 求解 Step1 定向 将所有点按 度数 从小到大排序&#xff0c;如果度数相同按 点编号 从小到大排序&#xff0c;u…

YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】

正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/4 题目大意 mmm个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci​)&#xff0c;如果ci≥min{xj}(ai≤j≤bi)c_i\geq min\{x_j\}(a_i\leq j\leq b_i)ci​≥min{xj​}(ai​≤j≤bi​)那么可以获得min{xj}min\{x_j\}mi…

牛客网【每日一题】5月1日题目 [SCOI2012]滑雪与时间胶囊

链接&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 a180285非常喜欢滑雪。他来到一座雪山&#xff0c;这里分布着M条供滑行的轨道和N个轨道之间的交点&#x…

漫谈单体架构与微服务架构(上):单体架构

最近微服务架构特别火爆&#xff0c;就跟人工智能、区块链一样&#xff0c;软件架构设计如果不提微服务&#xff0c;感觉就像是与世界先进的架构风格和开发技术脱了节似的&#xff0c;各方各面都无法彰显高大上的气质。本来再打算使用一套系列文章来讨论微服务的方方面面&#…

【数学】奶牛编号(jzoj 2932)

奶牛编号 jozj 2932 题目大意 求出有m个1的01串中字典序第n大的字典序 输入样例 7 3输出样例 10110数据范围 1⩽M⩽101 \leqslant M \leqslant 101⩽M⩽10 1⩽N⩽1071 \leqslant N \leqslant 10^71⩽N⩽107 解题思路 我们先从01串长度入手&#xff1a; 先对m1m 1m1的特…

CF732F Tourist Reform(dfs树、边双连通图、tarjan)

因为知道了算法tag&#xff0c;所以想到了正解&#xff1a; 先给出两个性质&#xff1a; 边双给边定向一定可以转为强连通图,此为最优解树给边定向后R的最小值必为0 性质2证明如下&#xff1a; 设树有n个节点, 若R_min!0, 则每点出度至少为1,各点出度之和至少为n, 则至少有…

【归并排序】奶牛的图片(jzoj 1812)

奶牛的图片 jzoj 1812 题目大意 给你一个序列&#xff0c;你可以交换相邻的两个数 让你用最少的交换次数来使得这个序列变成形如a1,a2...n,1,2...a−1,aa1,a2...n,1,2...a-1,aa1,a2...n,1,2...a−1,a的序列 问你最少的交换次数是多少次 输入样例 5 3 5 4 2 1输出样例 2解…

YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列&#xff0c;求有多少个区间[l,r][l,r][l,r]的平均值在[L,R][L,R][L,R]的范围内。 解题思路 如果让每个ai−xa_i-xai​−x&#xff0c;那么统计区间和大于等于111的区间数量就可以统计…

ASP.NET Core应用程序的参数配置及使用

应用程序的开发不仅仅是写代码这点事情。假设你正在开发一个能够支持多次部署的微服务&#xff0c;此时你就需要有一个合理的应用程序配置方案&#xff0c;以便在开发和生产环境中能够方便地选用不同的配置参数&#xff0c;并且能够在部署到容器服务&#xff08;比如ACS或者Kub…

“Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)

比赛链接 文章目录A题 A Simple Problem about election题目描述题解&#xff1a;代码&#xff1a;D题 Deploy the medical team题意&#xff1a;题解&#xff1a;代码&#xff1a;F题 Figure out the sequence题意&#xff1a;题解&#xff1a;代码A题 A Simple Problem about…

Kruskal重构树

建树 模仿kruskal的过程&#xff0c;先将边权排序 依次遍历每条边 若该边连接的两个节点u和v不在一个并查集内 就新建一个结点node 该点点权为这条边的边权 找到u&#xff0c;v所在并查集的根 fufufu,fvfvfv 连边(node,fu)(n o d e , fu )(node,fu) (node,fv)( n o d e , f…

【斜率优化】玩具装箱(luogu 3195)

玩具装箱 luogu 3195 题目大意 有n件物品&#xff0c;每件物品有相对的长度CiC_iCi​现在要把这n件物品放到容器中&#xff0c;切放的物品必须是连续的&#xff0c;若把第i件物品到第j件物品放到一个容器中&#xff0c;那此容器的长度定义为xj−i∑kijCixj−i\sum_{ki}^{j} …

P5895-[IOI2013]dreaming梦想【树的直径,结论】

正题 题目链接:https://www.luogu.com.cn/problem/P5895 题目大意 nnn个点的一个森林&#xff0c;加入若干条长度为LLL的边使它变成一个树&#xff0c;求这棵树的最小直径。 解题思路 显然最优情况一定是以某个节点作为中间展开的一个菊花图&#xff08;每棵树看做一个点&…

RabbitMQ一个简单可靠的方案(.Net Core实现)

前言最近需要使用到消息队列相关技术&#xff0c;于是重新接触RabbitMQ。其中遇到了不少可靠性方面的问题&#xff0c;归纳了一下&#xff0c;大概有以下几种&#xff1a;1. 临时异常&#xff0c;如数据库网络闪断、http请求临时失效等&#xff1b;2. 时序异常&#xff0c;如A任…

CF1120D Power Tree(树形DP/构造+差分+最小生成树)

解法一&#xff1a;树形DP 个人觉得这个方法是比较可能想到的&#xff0c;但是输出方案很恶心 先转换题意&#xff1a;“无论怎样规定叶子的初始点权&#xff0c;都可以通过操作你选择的点来让所有叶子的点权清空”意味着每个叶子节点都可以通过一系列操作单独1、-1 模拟一下…

牛牛染颜色

链接&#xff1a; 文章目录题目描述题意&#xff1a;题解&#xff1a;核心代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 牛牛最近得到了一颗树&#xff0…

【数学期望】【LCA】【树形DP】树

树 题目大意 给你一棵有n个节点的树&#xff0c;以及m个询问&#xff0c;每个询问需要你回答一个点到另一个点要经过的期望边数 输入样例 4 2 1 2 2 3 3 4 1 4 3 4输出样例 9 5 数据范围 对于 20%20\%20%的数据,N⩽10.N \leqslant 10.N⩽10. 对于 40%40\%40%的数据,N⩽10…