网络流衍生物——有上下界网络流の板子

【总结】有上下界网络流 说在前面 说明 无源汇上下界可行流 有源汇上下界可行流 有源汇上下界最大流 有源汇上下界最小流 说在前面 鶸鶸cosi以前做上下界网络流的题只会打板,并没有了解到算法本质。好久没有打过板的cosi今天考试果然在一道上下界最大流上挂了TAT。于是决定好好学习一下上下界网络流,下面是一些粗浅的理解,没有附代码,相信大家在众多博客中都找得到(雾)。 上下界网络流主要强调对初始流和附加... 阅读详情

处理流量下界的第一步

如果网络流问题中加入了流量下界,我们该怎么做呢?
抓瞎
像Dinic啊ISAP之类的网络流板子好像都只能无脑乱流没法处理流量下界的问题
说不定以后发明一种能处理流量下界的网络流算法?
但是现在只能在建图上下手了。。

对于一个有上下界的网络流图,记(u,v)这条边的下界为L(u,v),上界为R(u,v)。那么对于一条边来说,流过它的流量可以分为两部分。一部分是必须满足的下界L(u,v),另一部分是可以自由增多或者减少的R(u,v)−L(u,v),把这一部分流量记作F(u,v)。
显然目前的网络流算法只能处理F(u,v)的这一部分。那么我们要做的第一步就是把原图中的边的流量设置为F(u,v),并且取消它的下界限制。
如果我们把此时(u,v)这条边实际上流过的流量记作T(u,v),那么看起来T(u,v)+L(u,v)就是一种可行的流量方案?
似乎没有这么简单,因为凭空消失的流量下界不可能就这么罢休了。
接下来再如何处理,就要视具体问题而定了。

有上下界的网络流基本上有四种类型:无源汇可行流,有源汇可行流,有源汇最大最小流和有上下界的费用流。

无源汇可行流

所谓无源汇可行流问题,就是题目给你的这个图就是一个封闭的网络,每条边有上下界,问这个图能否在满足每条边上下界和流量平衡的条件下使流量循环流通。这个问题虽然非常局限,但它是上下界网络流问题中最基本的问题,其它问题的建图都是以它为基础的。

刚才我们把所有边的流量都替换成了R(u,v)−L(u,v)=F(u,v)并取消了它的下界限制。仅仅这样做到底为什么不对呢?
网络流图要满足的一个重要条件就是流量守恒,就是对于除了源点和汇点以外的其它中间节点,它接收多少流量就要流出多少流量。但是我们强行去掉流量下界然后把T(u,v)+L(u,v)作为这条边的可行流量,相当于每条边凭空多出了L(u,v)这么多的流量,那么流量守恒条件就不一定满足了。比如下面这个图:
这里写图片描述
右图是左图经过处理以后的图。显然右图上的可行流量是1。但是当把流量下界加进去以后可以发现最上面那个节点流进了2个单位流量,但是流出了3个单位流量。

对于一条u→v的边,如果把这条边的流量替换为F(u,v),那么就少给了v点L(u,v)的流量,多给了u点L(u,v)的流量。记一个点u的“缺失流量”D(u)=∑L(x→u)−∑L(u→y),这些流量我们必须想办法补上,才能保证加入流量下界以后仍然流量守恒。

那么就到了源点和汇点出现的时候了!源点作为唯一一个可以无限流出流量的点,汇点作为唯一一个可以任意流入流量的点,它们恰好可以为缺失流量的点补充流量,为冗余流量的点导出流量。
对于所有的点计算出它的D(u)以后,如果它的D(u)>0,说明它是一个缺失流量的点,需要从源点S向它连边,流量为D(u);如果它的D(u)<0,说明它是一个有多余流量的点,需要从它连到汇点T,流量为−D(u)。
那么上面那个图经过上述改造以后就变成了这样:
这里写图片描述
可以发现新增的源汇是为了补足丢失的下界,那么如果新增的边能够全部满流说明下界的限制是可以满足的,即存在可行流。此时将流过每条边的流量T(u,v)加上L(u,v)就得到了这条边可行的实际流量。

例题:POJ2314 Reactor Cooling

这题就是板子题。。作为练手的第一道题还是很不错的。

有源汇可行流

那么如果按照题目建的图本来就存在一对源汇,再按照上面的方法添加附加源汇岂不就成了有两对源汇的网络流图?
那么我们要做的就是把原图的源汇强行去掉,变成一个无源汇的网络流图以后再添上我们自己的源点汇点。
设原图的源汇为SS和TT,我们从TT到SS连一条下界为0,上界为inf的边。这样的话从SS流出的流量最终还会回到SS,并且想流多少流多少,这样就和上面提到的循环流通是一样的了。
然后我们求出包括SS和TT在内的每个点的D(u),添加附加源汇S和T建图就可以了。
同样,如果新图满流说明存在可行流。这个时候从TT到SS的那条边流过的流量就是可行流的大小。

例题:POJ2396 Budget

板子题+1

例题:BZOJ2406 矩阵

难点在于把这个题转化为网络流模型,然后用可行流来判定。

有源汇最大最小流

在给定源汇的情况下要求最大最小流也是常见的题型之一。
仍然考虑添加附加源汇以后的这个网络流图,如果从附加源汇S和T连出的那些边都能满流,说明至少下界的限制已经能够满足了,但此时流出的流量不一定是最大,也不一定是最小。
也就是说,当前这部分流量有可能还能退回去一些,也有可能还能再流出去一些,都是能满足下界限制的可行解。

同样设原图的源汇为SS和TT,那么,对于最大流,我们就考虑在可行流的基础上让它再从SS尽量往TT多流一些。
方法就是跑出可行流之后,把TT到SS的那条边拆掉,然后从SS到TT在残余网络上再跑一遍最大流。设此时跑出的最大流为F2,TT到SS那条边记录的可行流为F1,那么F1+F2就是这个有上下界网络流图能够承载的最大流。

最小流的做法是类似的,我们希望让它在可行流的基础上把流量尽量多地退回SS,同样拆掉TT连到SS的那条边并且记录可行流F1,然后从TT到SS跑最大流。设跑出的最大流为F2,那么F2就是这个图能够退给SS的最大流量,F1−F2就是原图的最小流。

例题:POJ3801 Crazy Circuits

最小流板子题+1

例题:BZOJ2502 清理雪道

最小流板子题+2

例题:BZOJ3698 XWW的难题

可以转化为有上下界的最大流

有上下界的费用流

费用流也可以加入上下界?
只需要按照上面的规则建图,原图中的边保留费用,新增的什么TT到SS的边啦,还有补流的那些边费用都设置成0。因为流出来的实际流量要加上原来的下界,那么费用也把下界的那一部分算进去就可以了。
也就是说,实际费用=新图中跑出来的费用+所有边的下界*费用之和。

但是有上下界的费用流和普通费用流有一个很大的区别!
普通的费用流是保证流量最大的前提下求出的最小或最大费用
而有上下界的费用流是满足流量限制的前提下求出的最小或最大可行费用。
因为跑的时候本来跑的就是可行流嘛。
这个特性是非常值得利用的,因为有时候普通费用流非得要保证流量最大其实挺烦人的

例题:BZOJ2055 80人环游世界

板子题+1

BZOJ4108 Catering

这个题就利用了有上下界费用流的特性

BZOJ3876 支线剧情

仍然是不保证流量最大的特性使这个题用上下界费用流做变得非常简单

有上下界的网络流——全家桶详解,后附例题 文章目录引言Part 1: 无源汇上下界可行流DescriptionSolutionPart 2: 有源汇上下界可行流DescriptionSolutionPart 3: 有源汇上下界最大流DescriptionSolutionPart 4: 有源汇上下界最小流DescriptionSolutionPart 5: 有源汇上下界最小费用最大流DescriptionSolution例题东方文化贴供电网络CF708DLOJ #3097 引言 ⌊\lfloor⌊ 给定一个网络图与其源点、汇点,每条边都有其流量的上限 阅读详情

相关推荐

最大流的一些板子

昂神在这里放出了Andrew Stankevich's Contest #1的题目

the CodeRoom of wjfwzzc 2043

POJ 3801 Crazy Circuits 有源汇的上下界最小流

点击打开链接 Crazy Circuits Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 512   Accepted: 421 Description You’ve just built a circuit board for your new

代码改变世界,keep coding。 1651

有上下界网络流问题

若在流网络的每条边加上两个限制条件,即low和up,low代表此边流量的下界,up代表此边的流量上界,求源点到汇点的最大流。

网络流板子

最大流dinic板子 const int N = 1e6+10, S = N-2, T = N-1, INF = 0x3f3f3f3f; int n; struct edge { int to,w,next; edge(int to=0,int w=0,int next=0):to(to),w(w),next(next){} } e[N]; int he...

weixin_30709929的博客 222

从虚拟机到双系统:手把手教你为Gromacs搭建最强Linux环境(含WSL2、Ubuntu22.04配置)

本文详细指导如何在Windows系统下为Gromacs分子动力学模拟搭建高性能Linux环境,涵盖WSL2和Ubuntu22.04双系统配置。通过对比虚拟机、WSL2和原生Linux的性能数据,提供GPU加速、内存优化等实用技巧,帮助科研人员提升计算效率。

weixin_30861797的博客 270

Ollama模型路径迁移实战:Windows/Mac/Linux三系统保姆级教程(附常见问题排查)

本文提供了一份详细的Ollama模型路径迁移教程,涵盖Windows、macOS和Linux三大操作系统。针对默认安装路径占用系统盘空间的问题,文章指导用户如何安全移动模型文件、配置环境变量、重启服务,并附有迁移后的验证步骤与常见问题排查方法,帮助用户高效管理本地AI模型存储。

gray5的博客 543

草地排水 (码一下自己的网络流板子)

此处应有题目链接 但是非常遗憾的是这次并没有 代码 #include #include #include #include #include #define ll long long #define inf 10000001 using namespace std; struct node{ int to,num; }edge[440]; int n,m; v

everlasting的博客 497

实战指南:利用 LangGraph 的状态管理实现多轮对话的上下文隔离与持久化

本文详细介绍了如何利用LangGraph的状态管理机制,高效实现多轮对话中的上下文隔离与持久化。通过实战代码演示,从基础的消息历史管理到自定义状态扩展,再到使用SQLite进行生产级持久化,系统讲解了如何借助LangGraph的State和Checkpointer自动化处理对话记忆、用户隔离及数据存储,显著提升开发效率。

weixin_28396629的博客 488

有上下界网络流

前言: 下面写得只是一些十分基础的东西,是给我以后自己看的,想要彻底弄明白这个内容,推荐去看liu_runda。 注:为了方便,下面所有的(x,y,L,R)都表示一条从x连向y,流量下界为L,流量上界为R的边。 1、无源汇上下界可行流: 问题简述: 给出一个有向图,每条边有流量上下界,没有源点和汇点,要求找到一种流的方法,使得每个点流入的流量与流出的流量相等,且每条边的流量都要满足上下界...

TYB的博客 604

Win11笔记本BIOS设置避坑大全:Secure Boot、RST、UEFI引导,一次讲清

本文详细解析了Win11笔记本BIOS设置中的关键问题,包括Secure Boot、Intel RST和UEFI引导的配置方法,帮助用户避开双系统安装中的常见陷阱。特别针对不同品牌笔记本的BIOS界面差异,提供了实用的操作指南和优化建议,确保系统兼容性和启动效率。

weixin_29251131的博客 689

ggml_cgraph 详解

是 GGML 库的(Computation Graph)结构,它是深度学习框架的核心,用于表示、优化和执行神经网络的计算过程。

zhouzwd87的专栏 1203

有上下界的网络流问题

有上下界的网络流问题详细讲解:有源汇可行流+无源汇可行流/最小流/最大流。

Regina8023 4592

交通仿真软件:SUMO_(13).Python脚本与TraCI接口

通过TraCI接口,用户可以实现与SUMO仿真器的实时交互,获取和控制交通数据。本文档详细介绍了如何使用Python脚本与TraCI接口进行交互,包括基本的设置、数据获取和控制方法。此外,还展示了几个高级应用示例,如交通流优化、多代理系统、车辆路径规划和车辆行为模拟。这些示例可以帮助用户更好地理解如何利用TraCI接口进行复杂的交通仿真和分析。希望这些内容对您有所帮助,如果您有任何问题或需要进一步的帮助,请参考SUMO的官方文档或社区支持。

kkchenjj的博客 1001

POJ 3801 Crazy Circuits——有源汇有上下界最小流

题意:给定n个点m条边,点的编号为1~n,另外有两个特殊的点+和-,+为原点,-为汇点,给定每条边的下限,问这个网络的最小流是多少? 思路:有源汇有有下界的最小流,详解:https://www.cnblogs.com/liu-runda/p/6262832.html #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;i...

hao_zong_yin的博客 435

【unity小技巧】常用的方法属性和技巧汇总(长期更新,2025/07/02更新)

Unity开发技巧摘要 本文汇总了Unity开发中的实用技巧,包括移动控制、力应用、物体翻转、单例模式实现等。移动方面介绍了MoveTowards、MovePosition、Translate等方法的区别与应用场景;力应用部分详解了AddForce系列方法的参数和使用方式;物体翻转对比了三种实现方案;单例模式提供了标准实现和泛型优化版本;还收录了绝对值计算、鼠标检测、旋转控制、数值取整等实用代码片段。这些经过验证的技巧能有效提升开发效率,文章将持续更新补充新的实用内容。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3349

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1816

【POJ 2396】 Budget 带上下界网络流 解题报告

BudgetTime Limit: 3000MS Memory Limit: 65536K Special JudgeDescriptionWe are supposed to make a budget proposal for this multi-site competition. The budget proposal is a matrix where the rows rep

Hineven的博客 OIer 1042

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

有上下界网络流系列习题

洛谷 BZOJ 2502 清理雪道 洛谷 BZOJ 3876 支线剧情 [vijos1891] 学姐的逛街计划[BZOJ1283] [LOJ 6079] 最大费用最大流(由易到难 。。。。。。待补充 转载于:https://www.cnblogs.com/miecoku/p/9757516.html...

weixin_30823683的博客 248

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

网络流算法板子

最大流:EK,FF,Dinic,ISAP。因为实现方法几乎差不多,记住最优的即可。 Dinic #include #include #include #include #include #include using namespace std; const int maxn=1000; const int inf=0x3f3f3f3f; #define LL long long stru

zxy160的博客 547

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上下界可行流

无源汇上下界可行流 题目 给出一个有向图。每条边有流量上界和下界,问是否存在一中流量分配方案,使得每个点流量守恒(即流入量=流出量) 思路 解决这种问题的主体思路就是在初始流的基础上不断添加流量,使得满足流量守恒。 初始流很显然应该是每条边流量的下界。 但是这样并不满足流量守恒。然后考虑添加流量。 对于一个点,我们设初始流中他的流入量为\(rd\),流出量为\(cd\)。设\(d=r...

diecimu4798的博客 204

上下界网络流专题

BZOJ 2324ZJOI2011营救皮卡丘 XJTU校赛 贪吃蛇BZOJ 2324([ZJOI2011]营救皮卡丘)给定n点m边无向图,用k个人从起点出发,一个人走一条路代价为路的长度Li,你希望按照0,1,2,…,n的顺序依次经过这些点,其中经过的定义是任何1人经过该点,问k个人最小的道路总和。N ≤ 150, M ≤ 20 000, 1 ≤ K ≤ 10, Li ≤ 10 000考虑每次只有1

nike0good |Oier&ACMer | 熟能生巧 570

bzoj 2406: 矩阵 (有上下界的网络流)

2406: 矩阵 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 229  Solved: 90 [Submit][Status][Discuss] Description Input 第一行两个数n、m,表示矩阵的大小。 接下来n行,每行m列,描述矩阵A。 最后一行两个数L,R。 Output

clover_hxy的博客 1056

POJ刷题顺序

POJ从简到难(按照AC数目排序)的列表如下,作为小弱的刷题顺序。大牛们可以看后面倒排的hard表,还有四道题没人拿到first blood. 表格属性依次为:ID,Title, Ratio, AC, Submit1000 A+B Problem 0.55 188072 338977 1004 Financial Management 0.41 58282 140301 1003 Hangov

Super_zhao的博客 2万+

网络流板子1【无源汇上下界可行流】【有源汇上下界最大流】【有源汇上下界最小流】

无源汇上下界可行流 题意 给定一个包含 n 个点 m 条边的有向图,每条边都有一个流量下界和流量上界。 求一种可行方案使得在所有点满足流量平衡条件的前提下,所有边满足流量限制。 代码 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 210, M = (10200 + N) * 2, INF = 1e8; int n, m, S

谁是凶手1703 386

有上下界的网络流 学习笔记

预备知识f(u,v)f(u,v)表示u->v这条边的实际流量 b(u,v)b(u,v)表示u->v这条边的流量下界 c(u,v)c(u,v)表示u->v这条边的流量上界 在一个无源汇的普通网络流图中,满足 0≤f(u,v)≤c(u,v)0\le f(u,v)\le c(u,v) ∑f(u,i)=∑f(i,v)\sum f(u,i)=\sum f(i,v) 分别称为流量限制条件和流量平衡条件

zyf2000 7707

poj 3801 hdu 3157 Crazy Circuits--有源汇 有上下界 最小流

/* hdu 3157 poj 3801 题意:一个电路板,上面有N个接线柱(标号1~N) 还有两个电源接线柱 + - 然后是 给出M个部件正负极的接线柱和最小电流 求一个可以让所有部件正常工作的总电流 没有则输出impossible 其实就是一个 有源汇 有上下界 最小流 问题 处理有源汇有上下界最大流问题是: 1.构造附加网络 2.对ss、tt求最大流(ss、tt满流则有解) 3

2489
上一篇: [BZOJ2653]middle(主席树+二分)
下一篇: [BZOJ4199][NOI2015]品酒大会(后缀数组+单调栈+ST表)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值