快乐的一天从AC开始 | 20210710 | P3410

题目链接

今天的快乐从0点开始!

心路历程

这题看数据范围就猜是网络流,没想到还真是。

思路

首先需要介绍闭合图:一个有向图,图内的每一个节点,它能到达的点也属于这个图,称这个图为闭合图。

将每个生意和超级源点(S)连边,容量为收益。

将每个下属和超级汇点(T)连边,容量为代价。

将每个生意,和每个要求的下属连边,容量为INF。

这样,满足条件的方案构成的图一定是原图的某个闭合子图。

将割掉一个(S)到生意的边,看成是放弃了这个生意;将割掉一个下属到(T)的边,看成是带上这个下属;如果存在(S)(T)的流,就不符合条件了。所以最终的方案一定是原图的割

然后就想到了最小割。由于生意和下属的连边为INF,最小割必不可能包含这些边。

然后,闭合图的权值 = 所有生意的收益和 - 未选生意的收益和 - 选择下属的代价和 = 所有生意收益和 - 割。

由此,最大权闭合子图的权值 = 所有生意的收益和 - 最小割大小。

根据最大流最小割定理,跑个dinic最大流完事。

原文地址:https://www.cnblogs.com/zengzk/p/14992908.html