【网络流专题】

最近做了两道网络流神题,里面用了几个非常巧妙的技巧,在今后很多题目中都可以使用得到。

第一题:WC2007石头剪刀布

      这题是网络流,简直太难想到了,总之这道题有几个非常巧妙的转化。

      首先是补集转化,我要统计一个完全有向图中的三元环的个数,就等于所有环的个数-非三元环的个数。非三元环的个数怎么统计呢?观察三元环的特点,发现一个三元环必然有一个点在这个环中入度为二(出度为二),由此我们便可以得到一个计算三元环的公式(设d[i]为i的入度)

  C(3,N)-∑C(2,d[i])

=n*(n-1)*(n-2)-∑d[i] * (d[i]-1)/2

=n*(n-1)*(n-2)-∑(d[i]2+d[i])/2

=n*(n-1)*(n-2)-(1/2)*∑d[i]2 +m/2;

 

其中(n*(n-1)*(n-2)+m/2)皆为常数,不影响最大化(C(3,N)-∑C(2,d[i])),那么问题就转化成了最小化∑d[i]2 了。

这个平方应该怎么得到?标准做法非常NB,对于每条未定向边当做一个点,这个点向他的两个端点连边,而平方的费用怎么办?

拆边!对于一条容量为C的边,费用为flow2*k,那么我就把它拆为C条容量为一的边,费用分别为k,3*k,5*k......(2*c-1)k!

这道题貌似还要用到单位容量网络流做,等会在学把。

 

第二题:poi最少链覆盖

      给你一个有向无环图,要求用最少的链覆盖所有的边。

      做法是把图看成是一个网络流,要求每一条边流量下界为1的最小流。这个最小流怎么求呢?其实只要做一次上下界网络流再从汇点到源点反着做次网络流就可以了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值