ACM模板
文章平均质量分 75
Wall_F
这个作者很懒,什么都没留下…
展开
-
匈牙利算法
匈牙利算法的原理为:从当前匹配M出发(如果没有匹配,则取初始匹配M = φ),检查没一个未盖点,然后从它出发寻找可增广路,找到可增广路,则沿着这条可增广路进行扩充,知道不存在增广路为止。 根据从未盖点出发寻找增广路搜索的办法,可以分为:1、DFS增广。 2、BFS增广。在算法中用到的一些变量定义以及预处理如下:#include #include #include #incl原创 2012-11-10 16:43:51 · 1007 阅读 · 0 评论 -
二分图最大匹配之Hopcroft-Karp算法
Hopcroft-Karp算法该算法由John.E.Hopcroft和Richard M.Karp于1973提出,故称Hopcroft-Karp算法。原理为了降低时间复杂度,可以在增广匹配集合M时,每次寻找多条增广路径。这样就可以进一步降低时间复杂度,可以证明,算法的时间复杂度可以到达O(n^0.5*m),虽然优化不了多少,但在实际应用时,效果还是很明显的。基本算法该算法主原创 2012-12-02 13:55:34 · 19312 阅读 · 2 评论 -
DAG单源最短路径
1、基本算法我们知道DAG上一定存在拓扑排序,且若在有向图G中从顶点Vi->Vj有一条路径,则在拓扑排序中顶点Vi一定在顶点Vj之前,而因为在DAG图中没有环,所以按照DAG图的拓扑排序进行序列最短路径的更新,一定能求出最短路径。2、基本步骤处理顶点V时,对每条离开的边执行松弛运算,若果给出从源点到u的一条最短路径(经过v),则更新到u的最短路径。这个过程将检查图中每个顶点的所有路径,原创 2012-11-20 17:51:40 · 420 阅读 · 0 评论 -
Dinic模板
以POJ 4273为例。#include #include #include #include #include #include #include using namespace std;const int MAXN = 210;const int MAXM = 210*210;const int INF = 0x3f3f3f3f;stru原创 2012-11-21 13:21:17 · 276 阅读 · 0 评论 -
POJ 4273 Drainage Ditches
大意不再赘述。网络流入门题,这里我用的是Dinic算法,这里需要注意的是需要建立容量为0的一条反向弧。#include #include #include #include #include #include #include using namespace std;const int MAXN = 210;const int MAXM = 210*210;const原创 2012-11-21 11:34:28 · 650 阅读 · 0 评论 -
bign类C++高精度模板
很不错的高精度模板,但这个模板只能算加、减、乘、除等基本运算,但操作减法的时候只能大数减小数,所以最重要的操作是 + 、 +=、*、*=、、/、/=、-=、==,>=,这些基本的运算,最近通过在UVA在刷的几道题,发现自己以前的模板存在一些BUG,现在贴上已经改正的模板,欢迎大家指出我的BUG。#include #include #include #include #inclu原创 2012-12-22 16:16:54 · 11089 阅读 · 10 评论