二分图匹配
- 有向图的最小路径覆盖
把每个点拆成两个点,一个负责进边,一个负责出边,最小路径覆盖 = 点数− 新图的最大匹配。 - 二分图的最小点覆盖
=
最大匹配
证明: 如果有边不被覆盖,就可以加入匹配。 - 二分图的最大独立点集
= 点数 − 最小点覆盖
证明:所有的边都至少有一个点被选中了。也就意味着不会再有其他的点互相连接。同时因为这是最小顶点覆盖,所以这是最大独立点集。
春天来了
Description
- 这里有
n 个男孩和 n 个女孩要组成n对好朋友。 - 每个人都有一个腼腆值,每当一个男孩和一个女孩成为好朋友,产生的尬值就是他们腼腆值的乘积。
- 为了都能找到好朋友,我们现在要帮助他们进行男女配对,目标是让他们所产生的尴尬值总和最小。
Solution
这是道假的二分图,排序贪心就好了。
bzoj2744 [HEOI2012]朋友圈
从前的考试题,博客里有,不多讲。
cdoj 1432 放箱子
稽机工社组合数学第一章23333
如果两个相邻的点可以放下箱子的话,就连一条边,最后相当于求一个二分图的最大匹配。
典型套路
最小割
UVALive 7264 Kejin Game
Description
你现在在点一棵技能树(图),你想学会一个技能有三种方式
- 学会它所有的父技能,然后花费
ai 的代价学会它。 - 花费 bi 的代价,可以不学某个父技能。
- 花费 ci 的代价,直接氪掉这个技能。
现在问你,最少花多少钱,能学到某个技能
Solution
先把每个点拆成两个点
- 之间连一条 ci ,直接氪掉。
- 父节点向它连一条流量为 bi 的边,断掉这条边。
-
S
向它连一条
ai 的边,正常学习。 - 改点向
T
连边,容量
INF 。
跑个最小割。
hdu 3987 Harry Potter and the Forbidden Forest
Description
给你一张图,让你求最小割,并且最小割的割边数量需要最小。
Solution
青岛区域赛题。
这里有一个结论:满流是最小割边的必要但不充分条件。先跑一边最大流,然后把满流的边容量设为
1
,其它边容量设为
费用流
hdu 6118 度度熊的交易计划
- 从
S
向这些点之间连一条容量为
b[i] ,费用为 −a[i] 的边。 - 从这些点向
T
连一条容量为
d[i] ,费用为 c[i] 的边。 - 从
u
到
v 连接一条双向边,容量为 INF ,费用为 −k 。
费用流即可。注意自环。
hdu 4494 Teamwork
Description
- 给你一些任务,每个任务有自己的开始时间和需要多久能干完。
- 每个任务都需要一些人,这些人有最多五个种类,各种类之间的人不能相互替换,但是某些工人干完这个活后如果可以在另一个任务还没开始的时候赶过去,也可以帮那个任务干活,干的是自己的属性的活。
- 还有一个关键的点就是所有的任务必须人齐了才能干。
- 最后问你最少要多少个人能把活干完。
Solution
- 把点拆了,一个给自己,一个向外提供。
-
S
向自己用的点连流量为工人数量,费用为
1 的边。向往外提供的点连流量为工人数量,费用为 0 的边。 - 每个自己点向
T 连流量为工人数量,费用为 0 的边。 - 然后每个发散点往能去的地方连
(INF,0) 的边。
费用流即可。
最大权闭合子图
hdu 5855 Less Time, More profit
Description
M
个商店,
Solution
二分时间,然后建图,工厂是负值,售卖是正值,建好工厂才能卖是先后条件,然后跑费用流。裸题。
Hihocoder 1398
和上面那道题的建图很像,搞活动是正,请学生是负,跑费用流。
二分图带权匹配
所有用费用流跑二分图的都是异端!
poj 2195 Going Home
Description
给定一个
N∗M
的地图,地图上有若干个
man
和
house
,且
man
与
house
的数量一致。
man
每移动一格需花费
1
(即单位费用
Solution
带权二分图匹配即可。注意费用是曼哈顿距离。
UVA Live 6129 Sofa, So Good
Description
工厂里生产沙发需要经过两个步骤,现在
n
个人生产
需要满足以下条件:
1. 第一步运行时间短
2. 第二步运行时间短
3. 摸鱼(空闲)时间短
Solution
又是一道假题
分布做费用流即可, 三在一二满足时自然满足。