NOI2006 最大获利 最大权闭合图
摘要:最大获利最大权闭合图 Maximum Weight Closure of a Graph 在胡伯涛论文 《最小割模型在信息学竞赛中的应用》中有详细介绍。定义一个有向图G = (V, E)的闭合图是该有向图的一个点集,且该点集的所有出边都还指向该点集。即闭合图内的任意点的任意后继也一定在闭合图中。更形式化地说,闭合图是这样的一个点集V'∈V,满足对于∀u∈V'引出的...
阅读全文
posted @
2010-08-30 12:14
ylfdrib
阅读(1254)
推荐(0)
poj3189 二分搜索 + 二分图多重匹配
摘要:学习了下二分图多重匹配,感觉挺不错的,当点数比较少的时候,就不用转化成最大流来做了,代码复杂度较最大流低。其实学过匈牙利二分图最大匹配,学这个也很容易,所谓多重匹配,就是Y集合某点可以和X集合多点同时匹配,也就是说Y集合点度不再是一,问X集合的最大匹配是多少。对于X集合点u要和Y集合点v匹配,如果v点度未满,则直接uv匹配,否则,对v点的每一个父节点增广。这题比较容易想到二分,二分最小的range...
阅读全文
posted @
2010-08-27 21:33
ylfdrib
阅读(1330)
推荐(0)
poj1041 无向图欧拉回路 按最小升序输出
摘要:John's trip这道题很不错,由于图已经保证连通,首先用度数是否是偶数,判断图是否是欧拉图,然后,输出最小升序,就成了一大难题,百科上有代码,这题让我理解了深搜的又一强大功能,其实就是每次都从小往大的搜,先搜得一个最小序环,然后对环上的每一点进行搜索,其实对于欧拉图而言,每个点要么就只剩一个点,什么也搜不到了,要么还有一个环,只要把环上路径全都插入到对应位置上,用栈存路径,每次只有回溯到当前...
阅读全文
posted @
2010-08-24 21:27
ylfdrib
阅读(1604)
推荐(0)
zoj3378 双连通 求桥、割边 dfs
摘要:如果不知道什么双连通: 双连通分量这题和以前的双连通有点不太一样,以前求得时候都是整个图的割边,这里求得是两点间的割边,结题报告上说了一种暴力的方法,首先求出所有割边,然后求一次最短路,则割边和最短路径求一次交集,可以得到S, T间的桥,很不错的思路,如果没想法了,确实可以暴力一下,这题还可以用dfs + 记录的方法,直接求得S, T间的桥,dfs的时候,在每个桥边(u, v)都需要回溯,判断一下...
阅读全文
posted @
2010-08-23 20:53
ylfdrib
阅读(532)
推荐(0)
最小度限制生成树
摘要:具体讲解和证明,黑书上有,IOI2004国家集训队论文--王汀 中也有讲解, 这里简单介绍求法过程。为了方便叙述,把顶点V0的度数<=K称作度限制条件,把满足这一条件的生成树称为度限制生成树,把权值和最小的度限制生成树称为最小度限制生成树。要求的最小K度生成树,应该有以下的步骤:算法框架:1. 先求出最小m度限制生成树;2. 由最小m度限制生成树得到最小m+1度限制生成树;3. 当dT(v0...
阅读全文
posted @
2010-08-21 20:44
ylfdrib
阅读(4109)
推荐(0)
hdu3472 混合图的欧拉回路
摘要:HS BDC题意很简单,就是串单词,如果一个单词的尾字母和另一个单词的首字母相同,则可以连接起来,给你N个单词,问:能否串成一条链?关键在于如何建图,这题稍有不同,就是有些单词是可以翻转的,但也只能用一次而已。把二十六个字母'a'到'z'作为点,把每个单词作为边,如果某个单词首尾字母分别为a和b,则可以建一条有向边<a, b>,当然,如果此单词可以翻转,则建成无向边(a, b),显然可...
阅读全文
posted @
2010-08-21 11:51
ylfdrib
阅读(577)
推荐(0)
混合图的欧拉回路
摘要:混合图:即有的边有向,有的边无向。定义:对于图G的一个回路,若它恰通过G中每条边一次,则称该回路为欧拉(Euler)回路。 具有欧拉回路的图称为欧拉图(简称E图)。定理: 一个无向图是欧拉图,当且仅当该图所有顶点度数都是偶数。 一个有向图是欧拉图,当且仅当该图所有顶点度数都是0。有向图存在欧拉回路的充要条件:基图(把所有有向边变成无向边以后得到的图)连通,且每个点的出度等于入度。所以求混合图的关键...
阅读全文
posted @
2010-08-21 11:12
ylfdrib
阅读(2072)
推荐(1)
hdu3468 最大流 + 最短路
摘要:Treasure Hunting这道题出的相当不错。看上去像搜索,其实可以用最大流来做,或者二分匹配也行。题目大意:iSea和他的朋友一块去寻宝,地图上显示了很多的金币,图中有字母'A', 'B' ... 'Z', 'a', 'b' ... 'z',表示他们每次的会合地点,开始位置在A,他朋友每次以最短的距离有一个会合地点走向下一个会合地点,iSea也必须走最短路,但是他可以选择走有金币的路,不过...
阅读全文
posted @
2010-08-18 20:39
ylfdrib
阅读(978)
推荐(0)
【ZZ】最小割集Stoer-Wagner算法
摘要:一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。 可以用最小切割最大流定理:1.min=MAXINT,确定一个源点2.枚举汇点3.计算最大流,并确定当前源汇的最小割集,若比min小更新min4.转到2直到枚举完毕5.min即为所求输出min 不难看出复杂度很高:枚举汇点要O(n),最短增广路最大流算法求最大流是O((n^2)m)复杂度,在复杂...
阅读全文
posted @
2010-08-17 21:18
ylfdrib
阅读(15350)
推荐(5)
pku2125 最小割建模 + dfs 查找割边
摘要:Destroying The Graph题目大意:给定一个图,给每个顶点两个操作:删除顶点 i 的所有入边,需要花费W+,删除顶点 i 的所有出边,需要花费W-,现有一个图,可能含有圈和重边,问:删除所有的边,需要的最小花费,并输出操作过程。分析:既然删除出边和删除入边花费不一样,就可以拆点,对任意一点 u 拆成 u 和 u' 两个点,u 负责入边,u' 负责出边,u 和 u'之间无边相连, 这样...
阅读全文
posted @
2010-08-17 08:10
ylfdrib
阅读(857)
推荐(1)
pku1815 最小割点集 => 拆点 + 最小割
摘要:Friendship这题求得是点连通度,或最小割点集。删除这个集合,S到T就不连通,删除这个集合的任意真子集,S到T仍然有路可走。做法是拆点,将每个人p拆成两个点p和p',令p' = p + N, 建边<p', p, 1>,1为容量,其余的,如果A有B的号码,建边<A,B',INF>,最后求出S到T'的最大流即可(不同的建边情况不同,这里是S到T')。还有一难点是如果有多组...
阅读全文
posted @
2010-08-15 21:47
ylfdrib
阅读(641)
推荐(0)
pku3308 【论】如何将二分图顶点覆盖问题转化为最小割
摘要:在二分图中,有一个问题是,顶点覆盖问题。图G的一个顶点覆盖是由一些顶点构成的集合Q包含于V(G), Q包含每条边上的至少一个端点。Q的所有顶点覆盖边集E(G)。如果覆盖每个顶点需要付出不同的代价,也可以说是不同的花费,或称为点权,问题可以描述成,在保证覆盖所有边的情况下,如何使得权和最小。这里只讲二分图。我们可以建源点 S 和汇点 T,假设二分图两个点集分别为 X 和 Y。X和Y原来的边容量设为I...
阅读全文
posted @
2010-08-15 17:34
ylfdrib
阅读(1504)
推荐(0)
hdu3338 神奇网络流(最大流)
摘要:Kakuro Extension原数谜是个很有趣的游戏,如图,每一行或每一列空白称为一个回,每一回都对应着一个整数sum,sum就是这回的和。这些空白格里只能填入1—9这九个数字,且在每一回中不能重复。全黑色的格为空,有数字的格,左下角的表示列的和,右上角的表示行的和,则可以得到下面这个图。但这道题不是原来的数谜,这题与原数谜相比,少了一点规则,就是,每一回中出现的数字可以重复。给你一...
阅读全文
posted @
2010-08-15 09:55
ylfdrib
阅读(2357)
推荐(1)
pku2942 (点)双连通分量 求割点 判奇圈
摘要:Knights of the Round Table这题还是比较难了,我刷了两天,终于弄懂什么意思了,杯具!点双连通,指的是,去掉任何一个点以及这个点的临边,都不影响整个图的连通性。可以这样认为,任意两点都有两条完全不同的路可达,也就构成了圈。题目大意:国王身边有n个骑士,每次开会需要奇数个骑士来开会,会议桌是个圆桌,给出m个点对<A, B>,表示骑士A和B不能坐在一起,问:有多少个骑...
阅读全文
posted @
2010-08-12 09:47
ylfdrib
阅读(1098)
推荐(0)
pku3352 (边)双连通分量
摘要:Road Construction题目大意:在一个小岛上,有n个景点,r条道路,经常由于有的路需要修理,影响了旅客的观光。问:如果修理任意一条路的时候都不影响任意两个景点的连通,至少还需要多少条路。分析:以景点为节点,道路为边,建图后,去掉任何一条边,都不影响整体的连通性,说明此图的连通度 >= 2,正好是双连通的性质,如果去掉某条边,图的连通分支增加了,则这条边称为桥,这道题就可以用dfs...
阅读全文
posted @
2010-08-12 08:09
ylfdrib
阅读(385)
推荐(0)
hdu 2010 ACM-ICPC Multi-University Training Contest(1)——Host by FZU(杯具了)
摘要:题目链接:2010 ACM-ICPC Multi-University Training Contest(1)——Host by FZU昨天superbin把这套题拿出来做练习,5个小时过去了,杯具就这样发生了,一道都没过!比赛后,看了wzc大牛的解题报告,刷了三道hdu3433: A Task ProcessDP + 二分枚举k表示第i个工人完成k件甲任务,(T - Ai...
阅读全文
posted @
2010-08-09 16:12
ylfdrib
阅读(1229)
推荐(0)
pku3177 (边)双连通分量 求桥
摘要:初学双连通分量,刷了第一道题,纪念!题意:有F个牧场,R条道路,形如<A, B>,表示牧场A到牧场B有一条通路(双向的),给出路保证每两个牧场都有通路,有些cow每次都得走同样的路有A到B。问:再建最少的路使得任意两个牧场间都有两条不同的路,不同,指的是由A到B的过程中没有经过任一同一段路。分析:双连通分量,正好保证了切断任何一条边,都不影响分量中任何两个顶点的连通性,也就是说双连通分...
阅读全文
posted @
2010-08-08 11:10
ylfdrib
阅读(570)
推荐(0)
<zz>有向图强连通分量的Tarjan算法
摘要:转载自原博客:beyond the void[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3...
阅读全文
posted @
2010-08-08 10:46
ylfdrib
阅读(395)
推荐(0)
<zz>图的割点、桥与双连通分支
摘要:转载自原博客:beyond the void [点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个边集为割边集合。一个图的边连通度的定义为,最小割边集合中的边数。[双...
阅读全文
posted @
2010-08-08 10:36
ylfdrib
阅读(636)
推荐(0)
hdu1827 1269 2767 强连通分支 刷水
摘要:上一篇我刷了pku的三道,都是用Tarjan写的代码,主体部分相同,唯独处理不一样,在这里仅提供每道题的思路。hdu1827 Summer Holiday分析:wiskey大牛要通过电话通知大家,如果你有别的队员的电话,就可以有你代劳通知这些人,通知每个人的话费是不一样的,wiskey要花费最少达到通知所有人的目的。打电话这种模型具有传递性,用<A, B>来表示A可以通知到B,即如果&...
阅读全文
posted @
2010-08-06 20:37
ylfdrib
阅读(607)
推荐(0)
pku1236 2186 2553强连通分支及其缩点(Tarjan算法)
摘要:刚学到强连通分支及其缩点,瞻仰了下牛人博客:BYVoid, 这里图文并茂,非常清晰的讲了Tarjan算法的流程,很快我就看懂了!看来,牛人就是不一样啊。我感觉Tarjan还是蛮不错的,时间复杂度在O(n + m),已经很低了。而且这位大牛提供的伪码相当不错,一看便懂!找了三道题刷了一下,感觉这三道题都差不多,主要部分代码相同,唯有问题不一样,最后不同的处理即可。pku1236 Network of...
阅读全文
posted @
2010-08-06 09:25
ylfdrib
阅读(1122)
推荐(0)
pku2135 最小费用最大流 EK算法 邻接表实现
摘要:Farm Tour题意简单:FJ有N个农场,M条路,FJ要领朋友游玩,从1走到N,再回到1,不走重复路,每条路长度不一样,问最短路长为多少。转化为最小费用流来求解,建一源点S,指向节点1,容量为2,距离0,建一汇点T,N节点指向汇点,容量为2,距离为0,表示要有两条路从S到T,其余给定的路,容量为1,边权为路长,表示每条路只走一次。刚学的最小费用流,用邻接表实现了一下:
阅读全文
posted @
2010-08-05 07:53
ylfdrib
阅读(1308)
推荐(0)
pku2516 最小费用最大流 SPFA+栈求最短路 Ford_Fulkerson思想
摘要:Minimum Cost最近在看最小费用最大流,找了道题,练了练,还是比较简单的。题意很明确,有N个店主和M个供应商,有K种商品,每个店主对每个商品的需求量不一样,每个供应商对每个商品的库存量也不同,每种商品有不同的供应商提供给不同的店主,价格也不一样,都已给出,求满足店主所有要求的最小花费。由于各个商品互不干扰,就对每种商品求一次最小费用最大流就行了。建一个源点S = 0, 汇点T = N + ...
阅读全文
posted @
2010-08-02 21:29
ylfdrib
阅读(627)
推荐(0)
hdu1385 最短路 floyd + dfs
摘要:Minimum Transport Cost题意很简单,有N个城市,两两之间的距离用一个邻接矩阵给出。问题关键在于,找出最短路,并输出字典序最小的一条。以前一直也没想过这个问题,没想过怎么把最短的一条输出来。其实也不较简单,就是先用Floyd求得点对距离,在按照字典序dfs,把最短距离作为一个强剪枝来用,得到的第一个合法路径即为最短最小字典序路径。路径的输出可以用递归的形式来实现。代码
阅读全文
posted @
2010-08-02 20:50
ylfdrib
阅读(567)
推荐(0)
hdu1515 hdu1401 搜索
摘要:hdu1515Anagrams by Stack深搜能过,想好搜索技巧,很容易过。题意:给你两个字符串,问:第一个字符串按入栈出栈规则,能否达到第二个字符串,输出所有的方法,i表示入栈,o表示出栈。用dfs模拟第一个字符串入栈出栈过程:1. 当前字符入栈,就向下一层递归,即搜向下一个字符2. 栈顶元素出栈,对新的栈顶元素判断这题要求按字典序输出,这种先判断入,再判断出的方法正好符合。代码hdu14...
阅读全文
posted @
2010-08-02 20:41
ylfdrib
阅读(986)
推荐(1)