图论我在九月份打了很多板,基础较熟练,但对二分图匹配和网络流、费用流以及各种模型不太熟练。
二分图主要有这些模型
(部分参考lrj)
二分图最小覆盖(选择尽量少的点,使得每条边至少有一个端点被选中)
最小覆盖数=最大匹配数。
应用:某些操作与某些操作范围有重复,选一些操作覆盖整个范围。
二分图最大独立集(选择尽量多的点,使得每条边至少有一个端点不被选中)
答案=总数-最大匹配数。
最小覆盖与最大独立集是互补的。
应用:某些东西与某些东西不共存,选最多东西。
DAG最小路径覆盖
把所有节点x拆成两个节点x、x’,分别放在二分图两边。原图中的边a->b对应二分图中的a->b’。则答案=总数-二分图最大匹配数。
应用:多种。
网络流部分模型
(部分参考lrj)
多源多汇问题
超级源向所有原来的源连无穷大容量的边,所有汇向超级汇连无穷大的边。
点有容量
拆点为边。
容量下界
(不会)
二分图带权最大独立集
添加源点和汇点,源点向左边连权值容量的边,右边向汇点连边。中间的边容量都无穷大。
最大闭合子图
最大比合子图。
一顶小写代码啊!!我现在连km都不会写
题解
GGS-DDU
每个提升班从级别转移来,显然要拆点。这样考虑一下整个过程是怎么进行的,首先进了高级别就一定会进低级别,然后还有提升班。
最小树形图也可以建模。
春天来了
二分图中的不用二分图模型。
朋友圈
可以转化成二分图最大独立集。
转化时候一般要想一想比如“匹配了就相当于……”或者“连边就相当于……”,这样建模就能清晰。
放箱子
就是二分图匹配。
Harry Potter and the Forbidden Forest
反基数排序。(OwenOwl的词)
度度熊的交易计划
生产就是源给流量,卖就是给汇流量。显然容量、价格就是题中的容量价格。
区域之间的运输就是区域间的边,没有容量限制,那就没有容量限制。有价格,那就有价格。
稍微有点基础的费用流。
Kr Au Game
网络流可以实现选择和合并的功能。
串联=选择。
并联=合并。
从源点接到这里=在这里直接加上这么多。
Teamwork
因为每个人有两种操作,拆成闭锁点和开放点。
源点向自己用的点连流量为需要工人数量,费用为1的边。向往外提供的点连流量为需要工人数量,费用为0的边xz。
生产就是源给流量
每个自己点向汇点连流量为需要工人数量,费用为0的边,这个用来帮助跑满流xz。
什么叫帮助跑满流?
没有杀人这个操作,因此要把人给送回家。
Less Time, More profit
费用流最大权闭合子图?
[hihocoder]网络流五
建图AC。