网络流之最小割学习总结

网络流之最小割学习总结

AcWing 2173. Dinic/ISAP求最小割

最小割是指将两点(我们这里定为S、T),分割在两个不同的集合中的最小花费。在前面学习最大流时,我们知道当达到最大流时残留网络中一定没有从S到T的路径了,也就是当达到了最大流,S和T就没有流量意味着分别在两个集合中了;反之,最小割也一定是最大流,因为当达到最小割,意味着S到不了T,也就是说S到T已经没有流量了,所以求出从S到T的最大流就求出了S到T的最小割

AcWing 2279. 网络战争

该题让求一个分数的最大值,一般这种形式的都是01分数规划,也就是二分最后的答案x。

移项发现是Sum(wi - x) > 0,然后二分x,在原图中建边,如果w[i] < x,由于流网络中不能有负值,但是它一定会让这个不等式最优,所以直接把它加上即可;如果w[i] >= x,那么在流网络中建一条w[i] - x的边即可,最后跑出的最小割得出的x就是答案,本题所说的割边集合和最小割的定义确实不一样,最小割只要从S到T的,这个题S集合内部的边也可以算上,耐人寻味

AcWing 2280. 最优标号

对于每条边上的两个数,他们每一位的异或都是独立的,所以对于这些边和这些数字,我们对于每一位建立一张图,要求费用最小,那么就是这n个点,一些是1,一些是0,求这两个集合中有连边的数量,也就是最小割;综上,就是对于每一位连边然后求最小割左移k位即可

AcWing 961. 最大获利

首先是最大权闭合子图的做法:

​ 由于一个人只需要两个基站,那么我们将每个点向他需要的那两个基站连有向边,并且该人权值为正,基站为负,那么我们可以看出,每个人所需要的那两个基站必须在所选集合里,也就是所选集合里的点不能指出去,所以是个最大权闭合子图。但是由于该题每人只连两条边,但是该算法可以解决连多条边,所以有点杀鸡用牛刀的意思,并不是最优做法

其次是更优的最大密度子图的做法:

该题由于一个人只向两个基站连边的特殊性,所以一个人可以作为两个基站间的连边,最后要求所有边的权值 - 所有点的权值,和论文中的边带权密度子图化简后的式子一样,所以可以跑一边最大密度子图,将2g - pi 设为点权。

AcWing 2324. 生活的艰辛

最大密度子图的板子题,注意一下特殊判定

AcWing 2325. 有向图破坏

我们在学习最小点覆盖时,给的是一张无向图,每个点带一个权值。该题给了一些有向边,而且删入边和出边花费不同,那么我们就建立两排点,一排存删出边的也就是W+,另一派存W-,然后附上相应权值,按照给的边建图,跑最小点覆盖即可。另外注意输出最小割的割边时要从定义出发,不能单纯的从S点dfs看哪些点为0,从T点dfs看哪些点为0将他们当作被用的点,这样时极不正确的,因为有些点可能没被用,但也被算上了;所以我们要从定义出发,S到不了的就是t集合,T到不了的就是s集合,然后枚举每条从S到T的正向边(因为最小割的定义就是只从S 到 T),如果一个属于S一个属于T,那么就是一条割边

AcWing 2326. 王者之剑

分析可以得出:偶数秒一定吃不到东西,并且周围的东西会消失,假如奇数秒吃到东西,那么周围东西直接没了,那么我们可以进行徘徊,在奇数秒在走向一个新的与刚刚吃东西的那个地方不相邻的位置。那么从第一行开始吃,不能吃相邻的,就是一个最大独立集的模型,每个点向4个方向建有向边,跑独立集即可

AcWing 381. 有线电视网络

删点删到图不连通的最优情况就是两个点不连通就行了。那么我们枚举任意两点,算让他俩不连通的最小代价,那么不就是给了个流网络源点S汇点T,算最小割吗?注意一下这个题的毒瘤输入就行了

AcWing 2176. 太空飞行计划问题

这个就是一个典型的最大权闭合子图问题了,每个实验可能使用多个仪器;注意使用getline和stringsteam来处理这恶心的输入就行了,用atoi来将字符串转换为数字。注意atoi只能将char类型的字符串转换,不能直接转换string类,所以用S.c_str()先将string类变为char类型字符串。然后从S点dfs找到所有和S在同一集合里的点就是最大权闭合子图

AcWing 2199. 骑士共存问题

每个骑士会向8个方向发起攻击,那么我们按照黄色为攻击方,从S向他们连接,红色方向T连接,每个黄色指向8个红色,建图跑最大独立集即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值