算法知识
文章平均质量分 57
Hashmat
这个作者很懒,什么都没留下…
展开
-
输入规模决定算法
<br />运算量 n! 2^n n^3 n^2 nlogn n<br />最大规模 11 26 464 10000 4.5*10^6 1000000000<br />速度扩大两倍 11 27 587 14142 8.6*10^6 2000000000<br />这个表给出了机器速度扩大两倍后,算法所能解决的规模的原创 2010-09-14 15:25:00 · 3631 阅读 · 0 评论 -
KMP 牛人讲解
<br />KMP算法<br />我们从一个普通的串的模式匹配算法开始讲起,这样你才能更深入的了解KMP算法及其优点。<br />咱们先来看看普通的串的模式匹配算法是怎么进行比较的<br /><br />主串 (S) a b a b c a b c a c b a b<br />子串 (T)a b c a c (子串又被称为模式串)<br />红色表示当前这趟比较指针所在位置,兰色表示当前这趟比较中匹配的部分<br /><br />第一趟(详细过程)<br /><br />a b a b c a原创 2010-09-16 10:44:00 · 608 阅读 · 0 评论 -
匈牙利算法 (二分图的最大匹配)
如果已知某图是二分图,那么如何计算边数最多的匹配方案,即这个二分图的最大匹配呢? 最简单的方法是系统的列举所有二分图的所有匹配,然后从中选取边数最多者。由于这种方法所需要的时间高达2^|E|,因此不得不摈弃。下面介绍一种利用增广路径求二分图匹配的算法。 设M是二分图的一个匹配,将M中的边所关联的顶点称为盖点,其余顶点称为未盖点。若一条路径上属于M的边和不属于M的边交替出现,则称该路径为交错轨或者是交替链。若路径p是一条起始点和结束点是未盖点的交替轨,则称p为关于M的增广路径。例如,从图6-2原创 2010-09-14 15:27:00 · 1012 阅读 · 0 评论 -
(牛人总结)背包九解
<br />第一讲 01背包问题<br />这是最基本的背包问题,每个物品最多只能放一次。<br />第二讲完全背包问题<br />第二个基本的背包问题模型,每种物品可以放无限多次。<br />第三讲多重背包问题<br />每种物品有一个固定的次数上限。<br />第四讲混合三种背包问题<br />将前面三种简单的问题叠加成较复杂的问题。<br />第五讲二维费用的背包问题<br />一个简单的常见扩展。<br />第六讲分组的背包问题<br />一种题目类型,也是一个有用的模型。后两节的基础。<br />原创 2010-09-14 15:34:00 · 2535 阅读 · 3 评论 -
树状数组
树状数组简介: 树状数组是一种区间求和查询和元素修改的时间复杂度都在logN的线性的数据结构。它支持sigma(a[1], a[2], ... a[i]) 时间的复杂度为logN的查询,和对a[i]时间复杂度为logN的修改。来观察这个图: 令这棵树的结点编号为C1,C2...Cn。令每个结点的值为这棵树的值的总和,那么容易发现: C1 = A1 C2 = A1 + A2 C3 = A3 C4 = A1 + A2 + A3 + A4 C5 = A5 C6 = A5 + A原创 2010-09-18 11:33:00 · 878 阅读 · 0 评论 -
字典树+AC自动机
AC自动机是用来处理多串匹配问题的,即给你很多串,再给你一篇文章,让你在文章中找这些串是否出现过,在哪出现。也许你考虑过AC自动机名字的含义,我也有过同样的想法。你现在已经知道KMP了,他之所以叫做KMP,是因为这个算法是由Knuth、Morris、Pratt三个提出来的,取了这三个人的名字的头一个字母。那么AC自动机也是同样的,他是Aho-Corasick。所以不要再YY地认为AC自动机是AC(cept)自动机,虽然他确实能帮你AC一点题目。。。。扯远了。。。要学会AC自动机,我们必须知道什么是Trie,转载 2010-09-23 19:34:00 · 722 阅读 · 0 评论 -
线段树
<br />详细资料参见:<<线段树>>和ppt<<线段树>>--武汉大学原创 2010-09-28 10:35:00 · 807 阅读 · 0 评论