网络流练习
前言
学了网络流不能只会板 练习开始!
先丢一些理论
二分图匹配
网络流建模初级练习!
一个匹配就是左右的一个点
定义一个超级汇点在左边 向左边的点连一条容量为 的边
中间是容量为 的边
定义一个超级汇点在右边 向右边的点连一条容量为 的边
然后 最大流 = 二分图最大匹配
为什么?容易发现 如果能流一个流量就是一个匹配
时间复杂度
二分图最小点覆盖
这是什么?
要求:在二分图中选点 保证每条边至少有一个端点被选中
难证 过
结论 最小点覆盖 = 最大匹配
二分图最大独立集
要求:在二分图中选最多的点 满足一条边都不被匹配
结论 最大独立集 = - 最小点覆盖
感性理解
把最小点覆盖以外的点都取了 然后不取最小点覆盖的点即可
DAG 的最小路径覆盖
要求:在一个 DAG
中 用最小的不相交路径覆盖整个图
这个要推
因为是不相交路径
因此 一条路径一定满足路径中每个点入度出度都为
特别的 起点入度为 终点出度为
可以把每个点拆成两个点 然后变成一个二分图 中间连边
容易发现 路径最少 转化为满足 终点最少
因此 转化为左边没被选的点最少
不就是最大匹配问题?
结论 : 最小路径覆盖 = - 最大匹配
棋盘染色
1. 马形
要求: 的棋盘 要求在棋盘上放最多的马两两不互相攻击
考虑染色 因为马是跳 的 (不考虑死马脚)
所以 若一个点是 可以考虑 奇偶来分类
可以发现 这样子一定是可以构造二分图
跑二分图最大独立即可
适用范围 : 为奇数
题目
2.长脖子鹿形
要求: 的棋盘 要求在棋盘上放最多的长脖子鹿两两不互相攻击(范围 )
换种方法染色 观察到 是奇数 所以 它们一定会从偶数行到奇数行或从奇数到偶数行
这样也是跑二分图即可
三匹配 & 多匹配
要求:分别有 个物品 其中 中的物品有两两可以互相配对 中的物品有两两可以互相配对
求有多少个匹配
每个物品只能用一次
网络流建模题
把 放在中间 左边是 右边是 跑网络流
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)