![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 68
tragedies
这个作者很懒,什么都没留下…
展开
-
KM算法 详解+模板
(转自http://blog.sina.com.cn/s/blog_691ce2b701016reh.html)【KM算法及其具体过程】(1)可行点标:每个点有一个标号,记lx[i]为X方点i的标号,ly[j]为Y方点j的标号。如果对于图中的任意边(i, j, W)都有lx[i]+ly[j]>=W,则这一组点标是可行的。特别地,对于lx[i]+ly[j]=W的边(i, j, W),称为可行转载 2013-06-13 10:38:15 · 686 阅读 · 0 评论 -
poj2446 Chessboard
继续发二分图匹配的题。本题比较容易想到要在能放的格子间建立二分图,但在实际中建图可能会比较麻烦。其实,可以在每个相邻的格子连两条反向的边,然后进行二分图匹配,所得的匹配数应是m*n-k.(之前在网上看到的另一种思路,可以发现任何相邻两点的各自的横纵坐标之和必是一奇一偶,故可以以和为奇的点为左边的点,和为偶的点为右边的点,然后二分图匹配,此时所得的匹配数应是(m*n-k)/2).co原创 2013-06-04 19:51:06 · 508 阅读 · 0 评论 -
poj2239 Selecting Courses
最近在学二分图匹配(是的,你没看错,我也没开玩笑,对此我也很无奈),继续发匹配的水题。poj2239其实很容易就可以看出来可以把课程跟日程建立二分图,然后用匹配做。var n,i,j,p,q:longint; a:array[1..310,1..310]of longint; t:array[1..310]of longint; match:array[1..310]of long原创 2013-06-04 19:40:21 · 477 阅读 · 0 评论 -
poj1274 The Perfect Stall
usaco上的一道二分图匹配模板题,直接用匈牙利即可。注意不要直接交usaco程序var n,m,i,j:longint; a:array[1..200,1..200]of longint; s,match:array[1..200]of longint; h:array[1..200]of boolean;function check(v:longint):boolean;var i原创 2013-06-04 19:35:00 · 486 阅读 · 0 评论 -
最大匹配的Hopcroft-Karp算法
郁闷,csdn如何插公式?独立集:设 I 是 G 的一个点子集,若 I 中任意两个顶点不相邻,则称 I是 G 的一个独立集。最大独立集,指点数最多的独立集。根据定理,易知独立集与点覆盖互补。算法分为若干阶段,每阶段包含若下步骤:(1)将左侧未匹配点集设为起点,按照交错路径的条件,BFS,对图分层,在某层出现未匹配的右边点时停止(2)将左侧未匹配点集设为起点,按照层的顺序,和交错原创 2013-06-13 15:33:24 · 1635 阅读 · 2 评论 -
二分图匹配算法总结
(转自http://blog.163.com/baobao_zhang@126/blog/static/482523672008631103625967/)一、二分图最大匹配 二分图最大匹配的经典匈牙利算法是由Edmonds在1965年提出的,算法的核心就是根据一个初始匹配不停的找增广路,直到没有增广路为止。 匈牙利算法的本质实际上和基于增广路特性的最大流算法还转载 2013-06-04 23:17:55 · 732 阅读 · 0 评论 -
[bzoj1003] [ZJOI2006]物流运输trans
不难想到本题的方程为f[i]=min(min(f[j]+cover(j+1,i)*(i-j)+k)(0,其中cover(x,y)为若第x天到第y天走相同的路的最短路(注意cover(x,y)可能并不存在!!)之后的就是实现的问题了,由于最近非常不仔细,连一道最裸的完全背包题都因为输入输出调上30+分钟,故代码很挫,各位神犇不要鄙视...const MAXM=20; MAXN=100;原创 2013-06-04 20:46:26 · 1335 阅读 · 0 评论 -
最小点覆盖
点覆盖:设 K 是图 G 的一个点子集,若 G 中的每一条边至少有一个端点在 K 中,则称 K 是 G 的一个点覆盖。最小点覆盖,指点数最少的点覆盖。könig Theorem(könig定理): 一个二分图中的最大匹配数等于这个图中的最小点覆盖数。证明: 假如我们已经通过匈牙利算法求出了最大匹配(假设它等于M),下面给出的方法可以告诉我们,选哪M个点可以覆盖原创 2013-06-13 14:54:37 · 2333 阅读 · 0 评论 -
最小路径覆盖
路径覆盖:选取一些不相交的路径 (包括单个点),使得能覆盖所有的点。最小路径覆盖指路径覆盖中路径最少的一种。算法:(1)将有向无环图转为二分图(2)一组匹配等价于在原图中走了一条边(3)答案 = 原图点数 -最⼤匹配最小路径覆盖=|P|-最大匹配数;其中最大匹配数的求法是把图P中的每个顶点pi分成两个顶点pi'与pi'',如果在p中存在一条pi到pj的边,那么在二分图P原创 2013-06-13 12:51:55 · 486 阅读 · 0 评论 -
网络流算法整理
(转自http://blog.csdn.net/wangjian8006/article/details/7939599)EK(EdmondsKarp)算法:这个算法改进于Ford-Fulkerson算法,Ford-Fulkerson算法是不断用广搜找一条增广路,然后判断一次这条路的最小流量,再对这条路增流,而EK与FF算法不同的是用一个数组记录了广搜之后增广路的最小流量,然后再根据父亲数转载 2013-06-13 12:39:56 · 1365 阅读 · 0 评论 -
KM算法
算法原理:(1)通过给每个顶点一个顶标,把求最大权匹配的问题转化为求完备匹配的问题(2)设顶点 Ai 的顶标为 Xi ,顶点 Yj 的顶标为 Bj ,顶点 Xi与 Yj 之间的边权为 Wi;j(3)在算法执二过程中的任一时刻,对于任一条边 ,Ai + Bj >= Wi;j 始终成立(4)若由二分图中所有满⾜ Ai + Bj = Wi;j 的边 存在完备匹配,这个完备匹配就是⼆分图原创 2013-06-13 10:43:28 · 437 阅读 · 0 评论 -
poj2536二分图匹配
又是一道二分图匹配的裸题,其实只要把每只地鼠和其能跑到的洞穴连条边后用匈牙利算法即可。注意题目要的是不能跑到洞穴的地鼠数!!var n,m,sec,v:longint; a:array[1..100,1..100]of longint; s,match:array[1..100]of longint; h:array[1..100]of boolean;procedure i原创 2013-06-04 19:32:06 · 412 阅读 · 0 评论