网络流的网络流

做了一段时间的网络流,发现只会刷水,稍难的都不会。。。

水题就不放出来了,放一些模型和有趣的题吧

经典模型:
BZOJ1070: 每个人拆成若干个点,每辆车和拆出的第i个点连就代表他是这个人倒数第i辆修的车,对答案贡献i*c
BZOJ1532: 二分最大流
BZOJ1565: 最大权闭合子图:即点有依赖关系,对于一条边 (u,v) ,选了点 u 必须点v,选择一个点集使权值最大,构图:新增源,向正权点连边容量为点权,新增汇,负权点向汇连边容量为权值相反数,原图里的边容量为INF, 和源连的边容量总和减去新图的最小割即最大权值
BZOJ1927:因为出入度确定,点拆成一个出度点一个入度点,原图里的边在出入度里照连,源连向每个入度瞬移的费用

有趣的题目:

bzoj2597
石头剪刀布的情况好像没法算捏,考虑三个人猜拳除了石头剪刀布的情况,其他情况都是一人赢两次,一人赢一次输一次,一人输两次的情况,考虑让这种情况最小化。
用赢两次的那个人统计这种情况,一个人身上的情况是出度×(出度-1)/2,每场比赛一个点,连向相关的两人容量为1,每个人连汇点n条边代表赢i次增加的情况,如果本身已经有i的出度,1~i条边都不用建,所有情况数减费用流结果就是最多的情况,输出方案扫一下边

codechef Annual Parade: 传送门
首先一个城市经过多次意义只是为了到达其他城市,所以Floyd后转化成每个城市只去一次,唯一前驱后继,每个点拆出入度连边,费用流。因为我们一次费用流就是增广一条路径,到达一个点,假设这次增广费用是V,如果 V<C ,那么这次增广就可以对答案产生贡献,那么预处理出所有增广,将询问按C排序扫一遍就可以了

codechef Game of Numbers:传送门
每个数对只能用一次, a[i]<b[j] a[q]>b[p] 匹配,求最大匹配数,可以很容易先想到左边为 a[i]<b[j] ,右边 a[q]>b[p] 的最大流,至于GCD的限制,将GCD分解质因数,质因数放中间连就行了

codechef Course Selection:传送门
最小割
主要是一个课程的前驱要在他之前学很难限制
将每个课程拆成m+1个点,源和第1个点连inf,然后每个点和他后一个点连容量为 100 这一学期学的分数,x课程如果是y课程的前驱,那对于x课程的任意第i个点,向y课程第i+1个点连边,n*100-最小割

网络流的题很多要拆点拆边什么的,要注意一些模型
最大流的题一般不会太难,有时加个总和减最大流,二分什么的
费用流挺多要拆边的
最小割的很多都是一个点连源汇代表选还是不选,解个方程,用总和减最小割就是最大值
不知道说什么就这样吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值