后缀数组

后缀数组          后缀数组就是把一个文本串的所有后缀按字典序从小到大排放的数组。详细介绍见刘汝佳《算法竞赛训练指南》。          AC自动机可以处理多模板的文本匹配问题,而后缀数组也可以处理多模板的文本匹配问题。那么它们有什么区别呢?          AC自动机需要事先知...

2015-03-31 00:46:04

阅读数 2527

评论数 0

AC自动机

AC自动机          直接学AC自动机比较难理解,强烈建议先学完KMP和字典树并进行一定的练习后,对于失配指针和字典树构造有一定理解后再来学AC自动机的内容。有关AC自动机的详细介绍可见刘汝佳的《算法竞赛入门经典训练指南》P214. 给你一个字典(包含n个不重复的单词),然后给你一串连续的...

2015-03-29 22:09:50

阅读数 2605

评论数 0

字典树Trie

字典树Trie         字典树又叫单词查找树(Trie)或前缀树(可见刘汝佳《算法竞赛入门经典训练指南》P208)。顾名思义它是与单词的前缀相关的。给你一个单词和一个字典构成的字典树,你可以在O(m)(m为所给单词的长度)时间内判断出该单词是否属于字典。但是如果你用KMP或其他暴力方法,你...

2015-03-27 11:01:35

阅读数 2027

评论数 2

KMP算法

KMP算法         KMP算法求出ex[i]数组,ex[i]数组表示主串S中以第i个字符(也即S[i-1]位置)为尾字符的后缀与模式串T的前缀的最长公共部分。         KMP模板中,字符都是从下标0开始存放的,直到m-1位置。假设有两个串S和T,其中T为模板串,S为主串。KMP其实...

2015-03-26 10:33:36

阅读数 1882

评论数 9

线段树

线段树 注意:线段树维护的元素 与 线段树的节点不一样。 线段树整体维护的是从1到n下标的元素(当然也可以维护0到n-1号元素或者其他任意一个区间的元素)但是拥有1到大约3*n的树节点,每个树节点维护一段[L,R]的区间内所有的元素信息(没有0号树节点,因为如果你要指定0号树节点为根的话,那么i号...

2015-03-20 11:04:33

阅读数 2465

评论数 0

RMQ(Range MinimumQuery)问题

RMQ(Range MinimumQuery)问题          有关RMQ的详细介绍可见刘汝佳《算法竞赛入门经典训练指南》P197页          RMQ问题可以解决对于一个整数数组(当然也可以是其他可比较大小的元素类型)的任意区间[L, R]查询最值时,以O(1)时间复杂度回答询问。其...

2015-03-15 15:43:24

阅读数 1125

评论数 0

树状数组

树状数组 关于树状数组的详细介绍可见刘汝佳《算法竞赛入门经典:训练指南》         对于一个n元素的数组A[n],可执行如下操作:         Add(I, d):让A[i]变成A[i]+d。         Query(L, R):返回A[L]+A[L+1]+…+A[R]。      ...

2015-03-14 21:35:27

阅读数 1934

评论数 0

并查集

并查集          并查集是一种数据结构,一般它处理的是图(其实是解决无向图的)的连通分量问题,但是当并查集的根节点可以维护更多的信息时,并查集可以解决范围更广的基于无向图连通分量的问题。做了这么多并查集的题目后,我感觉并查集就是解决有关物与物之间的关系问题的数据结构且这种关系还必须是可...

2015-03-08 11:00:28

阅读数 2093

评论数 6

二分图判定

二分图判定        二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。        二分...

2014-06-14 17:31:47

阅读数 1598

评论数 0

BFS学习总结

BFS学习总结          给你一个n*m的网格迷宫,迷宫中有些格子不能走,其他的格子都能走。然后给你起点与终点,问你从起点走到终点最少需要多少步?          上面的问题就是一个典型的BFS问题,对于这类问题来说,只要你掌握了这类问题的关键思想,其实他们都是可以用类似的思路来做的。建...

2015-04-15 23:53:09

阅读数 3050

评论数 2

网络流

网络流          网络流问题的详细介绍可以看刘汝佳>和>相关部分。注意:下面的网络流模板里面考虑的都是有向图,如果要处理无向图,那么对于无向图的每条边,你需要再图上添加两个方向的边各一条且流量费用相同。          熟练模板并不是问题,问题是如何把实际的问题转化为网...

2015-04-13 21:29:12

阅读数 2154

评论数 0

二分图匹配

二分图匹配        给定一个二分图G(无向图),在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配.        选择这样的边数最大的子集称为图的最大匹配问题(maximal matchingproblem)        如果一个匹配中,图中的每个...

2015-04-11 23:10:56

阅读数 1676

评论数 0

最小生成树

最小生成树         一个有 n 个结点的连通图的最小生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的权值总和最小的边。 刘汝佳>P343详细介绍了最小生成树相关的知识。         下面直接给出Kruskal算法的模板: #include #incl...

2015-04-05 01:20:54

阅读数 1835

评论数 2

Bellman_Ford算法

Bellman_Ford算法          Bellman_Ford算法也是求单源最短路径的算法,但是它能算带负权边的图的最短路径(对于带负圈的图就无能为力),且可以判断当前图是否带有负圈。它的时间复杂度是O(n*m),其中n为点数,m为边数。          Bellman_Ford算...

2015-04-04 22:30:20

阅读数 1346

评论数 0

Floyd算法

Floyd算法         Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。         注意:由下面的练习可以看出,其实很多题目不是直接问你floyd怎么求最...

2015-04-04 19:14:04

阅读数 2095

评论数 0

Dijkstra单源最短路径

Dijkstra单源最短路径         给定一个带权有向图G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。         下面给出两个计...

2015-04-04 14:14:25

阅读数 1771

评论数 1

2-SAT问题

2-SAT问题         现有一个由N个布尔值组成的序列A,给出一些限制关系,比如A[x]AND A[y]=0、A[x] OR A[y] OR A[z]=1等,要确定A[0..N-1]的值,使得其满足所有限制关系。这个称为SAT问题,特别的,若每种限制关系中最多只对两个元素进行限制,则称为...

2015-04-03 19:17:37

阅读数 1202

评论数 0

有向图的强连通分量

有向图的强连通分量         有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图...

2015-04-03 11:10:25

阅读数 1755

评论数 0

无向图的双连通分量

无向图的双连通分量         点-双连通图:一个连通的无向图内部没有割点,那么该图是点-双连通图。         注意:孤立点,以及两点一边这两种图都是点-双连通的。因为它们都是内部无割点。         边-双连通图:一个连通的无向图内部没有桥,那么该图就是边-双连通的。   ...

2015-04-02 18:45:47

阅读数 3147

评论数 0

无向图求割顶与桥

无向图求割顶与桥         对于无向图G,如果删除某个点u后,连通分量数目增加,称u为图的关节点或割顶。对于连通图,割顶就是删除之后使图不再连通的点。如果删除边(u,v)一条边,就可以让连通图变成不连通的,那么边(u,v)是桥。         具体的概念和定义比较多,在刘汝佳训练指南&...

2015-04-02 14:14:22

阅读数 1630

评论数 3

提示
确定要删除当前文章?
取消 删除
关闭
关闭