网络流,二分图题目建模的一些总结

网络流,二分图建模

难的永远是建模,而不是算法本身;


洛谷·P3701 「伪模板」主席树

建模思路:

这题要看做是一个二分图来想,挑两个人出来比赛,相当于左部图匹配右部图,所以可以建一个源点 S,S 向每个左部图连一条流量为该左部图点的血量的有向边,右部图向 T 连一条流量为该右部图点的血量的有向边;
然后最关键的是题目说:每两个点只匹配一次,所以左部图向每个右部图连一条流量为 1 的有向边;最后跑一边最大费用流;
这题的建模思路有点像二分图最大匹配,但是还是有点区别;


洛谷·P6268 [SHOI2002]舞会

建模思路:

这题首先要明白要求的是什么,要求的是整个图中最少的点去覆盖整个图的边,就是图的最小点覆盖;

然后观察可以发现,这个图是一个二分图,所以其最小点覆盖就是二分图的最大匹配;

答案就是 n − 二 分 图 最 小 点 覆 盖 n-二分图最小点覆盖 n 也就是二分图的最大独立集

这题最好还是匈牙利算法,因为题目的二分图不一定是连通的,如果每个连通块都去找源点和终点,非常麻烦,匈牙利算法可以直接左部图匹配右部图;


洛谷个人私题 U64970 車的放置

建模思路:

这题推导可以发现,如果没有格子是禁止放置的,那么最多可以放 min(n,m) 个。

可以这样建模,一行一列最多放一个车,那么如果(i,j)这个位置可以放置,第 i 行和第 j 列就可以想象为它们之间进行匹配了,并且一列最多匹配一行,所以建完图就是一道二分图最大匹配的裸题了;


洛谷·P2774 方格取数问题

建模思路:

做这题首先要明白,两个点,如果它们坐标(i,j), i+j 奇偶性如果相同,那么这两个点是不会产生冲突的,所以这就可以看做是一个二分图,左部图是坐标和为奇数的点,右部图为坐标和为偶数的点;左部图连接右部图就是一个点连接其的上下左右的点(也就是奇偶性不同)。

虽然是一个二分图,但是毕竟不是二分图最大匹配(是二分图最大全权匹配),题目要求的是最大权值和,这个时候可以想到建立一个源点和汇点(一般思路);想到这,自然可以想到是往最大流上面想了,源点连接左部图,边权设为点权;右部图连接汇点,边权设为点权;然后跑一边最大流,求出值;

这个值代表的是产生冲突的最少花费,可以叫最小割吧;


洛谷·P3355 骑士共存问题

建模思路:

最关键的就是要找出每个点的关系,很难发现这个图最后是和 《方格取数》 那道题一样的图,奇偶点分成一个二分图;

最后求一个二分图最大匹配就行,但是匈牙利算法会卡,毕竟复杂度比 Dinic 高了一点;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值