码迷,mamicode.com
首页 > 其他好文 > 详细

二分图&网络流&最小割等问题的总结

时间:2016-07-13 01:02:21      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

二分图基础:

最大匹配:匈牙利算法

最小点覆盖=最大匹配

最小边覆盖=总节点数-最大匹配

最大独立集=点数-最大匹配

网络流:

带下界网络流

 

最小割问题的总结:

*意义

1.加inf的边表示不能被割,通常用于体现某个点必须属于某个集合

  连边(s,u,w)代表如果u不在s割的话需要付出代价w

2.连边(u,v,w)代表如果u在s割,v在t割需要付出代价w 但注意,如果u在t割,v在s割是不需要付出代价的。 那么如果连边(u,v,w)以及(v,u,w)则说明当u与v所属割不同的时候需要付出代价w

*技巧

0.当求一些最大问题时,常常用sum减去代价

  这个代价要求最小,于是可以用最小割解决

1.两个点i,j属于不同集合时付出val代价

   新建点k (s,k,val) (k,i,inf) (k,j,inf)

  当vals,valt不同时通常要新建点

  但当相同时,可以直接(u,v,w)(v,u,w)表示不在一个集合就付出w代价

  例题:BZOJ1497,BZOJ2127,BZOJ1934

2.两个点属于同一集合付出val代价

  这个时候通常图的性质是二分图。(求打脸

  然后我们可以将两部点的性质翻转一下,即左部点连s表示选,右部点连t表示选。

  所以转化后问题变为了第一个。且只需 (i,j,val) (j,i,val)

  例题:BZOJ1976,BZOJ2132,BZOJ3275

有难度的题目:

SRM558 Div1 C

技术分享

解法:

一个点拆成x1,x2,分别表示自己是否有石头,周围是否有石头

x1收益v-c,x2收益v,将可能的收益加起来,减去最小代价

若两者同时选,付出v的代价

若对于相邻格子x,y  x2满足而y1不满足,付出代价inf

技术分享

技术分享

二分图&网络流&最小割等问题的总结

标签:

原文地址:http://www.cnblogs.com/wjyi/p/5665348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!