二分图基础:

最大匹配:匈牙利算法

最小点覆盖=最大匹配

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

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

网络流:

技巧:

1.拆点为边,即一个点有限制,可将其转化为边

BZOJ1066,BZOJ1305

2.考虑左右两部,即比如横竖、男女、比赛和人等。

BZOJ1532

带下界网络流问题

----------------------转自zyf-zyf

ss和tt为附加源或者说超级源

1.无源汇上下界可行流

对于(u,v)有向边,上界为a,下界为b 构图方法为:

(1) ss 到 v 容量为 b

(2) u 到 tt 容量为 b

(3) u 到 v 容量为 a-b

求ss-tt最大流,当且仅当 maxflow=sigma(i,tt)=sigma(ss,i) 时 存在可行流

2.有源汇上下界最小流

如果发现原图有源汇,要先转化为无源汇

其他点如1方法,建图,另加 t-s 容量为 inf

求一遍 ss-tt最大流,此时s-t的流量为 t-s这条边的反向边的流量,记为 x

在残量网络中删去 t-s 边,具体方法为 e[i].v:=0 e[i xor 1].v:=0

求一遍 t-s最大流(注意是 t-s),记此时的最大流为y

则最小可行流为x-y (可以理解为求出一个可行流,然后退掉了一些无用流)

3.有源汇上下界最大流

构图如2,只是求完ss-tt最大流后,不做记录,也不删边,直接在残量网络上求s-t最大流,即为答案

(可以理解为,求出一个可行流后,发现还可现流更多的流,就求s-t最大流 之所以可以不删边

是因为第一次ss-tt最大流完了之后s-t的流量存在 t-s的反向边s-t中,在跑s-t最大流的时候已经将其算入答案)

题目:BZOJ2502、BZOJ2150、BZOJ1458、BZOJ3876

----------------------end

流量平衡方程构图法:

例子:noi2008志愿者招募,bzoj1283序列

列出式子,添加辅助变量变成等式。上下相减。

常数和为0,将每个式子当作一个点

常数为正,则(s,x),容量为常数,费用为0

常数为负,则(x,t) 容量为常数绝对值,费用为0

对于每个变量,正的向负的连容量为inf,费用根据题目。(辅助变量费用为0)

然后就可以费用流解决啦

-------------------------------------------------------

费用与流量平方 ——拆边,费用分别为1,3,5,7,9....

最小割问题的总结:

*意义

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代价

----------其实这就是最大权闭合子图的解决方法,因为两点必须在同一集合,所以他们之间可以连inf的边表示不可分离

例题:BZOJ1497,BZOJ2127,BZOJ1934

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

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

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

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

例题:BZOJ1976,BZOJ2132,BZOJ3275

3.如果有负权

比如一个点属于s集合收益x,属于t集合收益y,  (x,y可能为负数),两个点之间还有二元关系(二分图),即一个点有可能选择负收益,求最大收益

还是先按照技巧0,将所有正权可能的收益加起来,考虑去掉最小代价

普通的二元关系等通过技巧2、3建边

那负权收益如何处理呢?考虑将负权应该连向的边s和t交换,权值再取反。

因为一开始的最大值中就没有加负权,如果要割断该点,一定是正权边和负权边一起被割断,答案合法。如果不在此处隔断,即两边均不需割,答案不变,恰好是取正权的答案。

(语死早,还不肯定自己讲的是对的23333

相关论文:彭天翼 《浅谈一类最小割问题》

二分图&网络流&最小割等问题的总结的更多相关文章

  1. 【题解】 bzoj3894: 文理分科 (网络流/最小割)

    bzoj3894,懒得复制题面,戳我戳我 Solution: 首先这是一个网络流,应该还比较好想,主要就是考虑建图了. 我们来分析下题面,因为一个人要么选文科要么选理科,相当于两条流里面割掉一条(怎么 ...

  2. 【bzoj3774】最优选择 网络流最小割

    题目描述 小N手上有一个N*M的方格图,控制某一个点要付出Aij的代价,然后某个点如果被控制了,或者他周围的所有点(上下左右)都被控制了,那么他就算是被选择了的.一个点如果被选择了,那么可以得到Bij ...

  3. 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割

    题目描述 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河 ...

  4. 【bzoj1797】[Ahoi2009]Mincut 最小割 网络流最小割+Tarjan

    题目描述 给定一张图,对于每一条边询问:(1)是否存在割断该边的s-t最小割 (2)是否所有s-t最小割都割断该边 输入 第一行有4个正整数,依次为N,M,s和t.第2行到第(M+1)行每行3个正 整 ...

  5. 【bzoj1976】[BeiJing2010组队]能量魔方 Cube 网络流最小割

    题目描述 一个n*n*n的立方体,每个位置为0或1.有些位置已经确定,还有一些需要待填入.问最后可以得到的 相邻且填入的数不同的点对 的数目最大. 输入 第一行包含一个数N,表示魔方的大小. 接下来 ...

  6. 【bzoj4177】Mike的农场 网络流最小割

    题目描述 Mike有一个农场,这个农场n个牲畜围栏,现在他想在每个牲畜围栏中养一只动物,每只动物可以是牛或羊,并且每个牲畜围栏中的饲养条件都不同,其中第i个牲畜围栏中的动物长大后,每只牛可以卖a[i] ...

  7. 【bzoj3438】小M的作物 网络流最小割

    原文地址:http://www.cnblogs.com/GXZlegend/p/6801522.html 题目描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物 ...

  8. 【bzoj3144】[Hnoi2013]切糕 网络流最小割

    题目描述 输入 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...

  9. 【bzoj3894】文理分科 网络流最小割

    原文地址:http://www.cnblogs.com/GXZlegend 题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用 ...

随机推荐

  1. Jni 调试 : eclipse + Vs 联合调试

    摘要: 本文原创,转载请注明地址 http://www.cnblogs.com/baokang/p/4982640.html 1.在Eclipse 中,Java 类中链接库引用到vs的debug目录下 ...

  2. collections 模块(namedtuple, deque, Counter )

    基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型 ...

  3. java中面向对象的一些知识(二)

    一. 封装的讲解 什么是封装?为什么要封装?怎么实现封装? 封装的目的是为了提高程序的安全性.封装就是把不想让第三者看的属性,方法隐藏起来. 封装的实现方法是: 1.修改属性的可见性,限制访问. 2. ...

  4. eclipse逐步调试

    Eclipse 的单步调试 1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目上.2.调试(1)点击"打开透视图"按钮,选择调试透视图,则打开调试透视图界面 ...

  5. appium 九宫格解锁招商银行手机客户端app

    之前研究了一段时间的appium for native app 相应的总结如下:                                            appium测试环境搭建 :ht ...

  6. 10分钟了解设计模式(C#)

    最近把<大话设计模式>重温了下(看完序才知道原来作者是也是博客园园友,这本书的最早博客版本在这里).体会最深的就是面向接口编程的重要性,如何在自己的项目中进行抽象,合理的利用各种设计模式. ...

  7. 摆脱Spring 定时任务的@Scheduled cron表达式的困扰

    一.背景 最近因为需要,需要适用Spring的task定时任务进行跑定时任务,以前也接触过,但是因为懒没有好好地理解@Scheduled的cron表达式,这次便对它做了一个全方位的了解和任务,记录下来 ...

  8. WPF 如何引入外部样式

    当我们给一些控件设置相同的属性的时候,这时候,我们可以把这些属性写到一个Style里面. 而其他页面也有类似的控件也需要使用这个Style,这时候就需要把这个Style放在一个共通的文件里,然后引入这 ...

  9. access基本操作(c#操作,远程连接,执行sql,加密,备份)

    前言 最近项目用到了access,是的就是access,工作在桌面型的小数据库应用还是会用到的,如果你确定永远不会遇到access的操作,请忽略此篇文章 1.vs配置access 既然是数据库,就少不 ...

  10. centos 6.6 系统中配置sendmail和dovecot

    网上介绍sendmail的文章千百种,很少有跟着做下来一次成功的.多少都有些说的不准确的地方. 我给大家共享一下我经过实验环境测试,完全可行的方法. 1.软件准备 操作系统:centos6.6我选择c ...