网络流/二分图总结(二)

上一篇:网络流/二分图总结

上一篇是最基础的代码实现,这次补充一点,顺便总结一下进来做过的网络流题目。

一些算法

最大权闭合图

详见胡伯涛论文,将S与正权点相连,流量为点的权值,将负权点与T相连,流量为改点权值的绝对值。将原图的有向边替换为流量为INF的边,求最小割即最大权。

题目:NOI2006最大获利

二分图最小点权覆盖

连S与左边的点,连T到右边的点,流量为点的权值,二分图原来的边换为流量为INF的边,最小割=最小点权覆盖的权值

二分图最大点权独立集

权和-最小点权覆盖。和上面的关系就像二分图独立数和最小覆盖数的关系,不过多了权值,就要转换为最大流求解了。

一些题目

1.传纸条/方格取数

2.TYVJ 1338

二分图最大点权覆盖。

代码:http://fayaa.com/code/view/20890/

3.HDU 1569

方格取数,给出方格,不能取相邻的边的数,求最大能取得和。经典问题,二分图最大点权覆盖,上一题基本就是这个经典问题改编的。但是我调试不出来,因为HDU交一些Pascal程序上去总是编译失败,所以这题是用C写的,而且时隔一个月还参考了别人的代码,细节和语言和上一道不同,有点难查错,目前是WA。具体的写在代码注释里

代码:http://fayaa.com/code/view/20891/

3.RQNOJ 77

给出一个带权的无向连通图,要求去掉一些边,使其存在两个点不再连通,求最小的边的权值和。即求无向图全局最小割。可以枚举源点与汇点,找最小割。实际仅需固定源点,枚举汇点就行了。

代码:http://fayaa.com/code/view/20892/

存在Stoer-Wagner 算法,在该问题上有一个优雅的解法,但是应用面太狭窄,就没有深入了解。有兴趣的可以看

http://www.cppblog.com/imky/articles/123427.html

http://www.rqnoj.cn/Discuss_Show.asp?DID=4234

4.RQNOJ 306

题意:输油管道为无向流图,且工作在最大流条件下,每条管道有一个抗压指数,当石油的流量超过这个数管道就会爆炸。某组织能使一条管道的抗压指数下降1。求让哪些管道的抗压指数下降,一定可以摧毁发烂稀国的石油运输网络。

算法:来自RQNOJ题解:跑一遍最大流,在残量网络中作传递闭包,输出所有连接状态不同的两个顶点的边,不能求饱和弧,因为可能会绕一圈后还是最大流,输入的边是无向边。

代码:http://fayaa.com/code/view/20893/

5.POJ 2135

http://www.cnblogs.com/oa414/archive/2011/06/05/2073294.html

6.POJ 3469

构图太奇妙了!

http://hi.baidu.com/legend_ni/blog/item/6cef550694bca810738da5d2.html

http://hi.baidu.com/%D2%D5%C1%D6010/blog/item/90b649cc7b47045c0eb3454d.html

代码:http://fayaa.com/code/view/20895/

7.HDU 3046

喜羊羊和灰太狼……

给出方格,羊和狼的位置,羊要筑墙围住自己,求最小的墙的长度。

算法:狼连源点,羊连汇点,相邻方格连代价为1的边,求最小割

代码是PASCAL的,仅过了样例,HDU上编译失败

代码:http://fayaa.com/code/view/20896/

一点废话

还以为自己做了不少网络流的题目,没想到那么少。好几个星期没写,前几天重新拿起的时候写个sap之类的都要翻原来的程序。还有不少题目是WA的,没有十分明白的,还没拿上来。另外,想学习一下dinic、预流推进等算法,顺便把EK也复习一下,费用流的什么zkw算法、消圈算法也想了解下,另外KM还是没有完全弄懂。这一段时间会把这些尽量完成,并找些网络流/二分图的题目来做,届时会写出第三篇总结。

posted on 2011-07-10 21:30  oa414  阅读(308)  评论(0编辑  收藏  举报

导航