第一部分:跳跃表
本文将总结一种数据结构:跳跃表。前半部分跳跃表性质和操作的介绍直接摘自《让算法的效率跳起来--浅谈“跳跃表”的相关操作及其应用》上海市华东师范大学第二附属中学 魏冉。之后将附上跳跃表的源代码,以及本人对其的了解。难免有错误之处,希望指正,共同进步。谢谢。
跳跃表(Skip List)是1987年才诞生的一种崭新的数据结构,它在进行查找、插入、删除等操作时的期望...
分类:
其他好文 时间:
2014-09-14 23:46:08
阅读次数:
1323
本文讨论了最长公共子串的的相关算法的时间复杂度,然后在后缀数组的基础上提出了一个时间复杂度为o(n^2*logn),空间复杂度为o(n)的算法。该算法虽然不及动态规划和后缀树算法的复杂度低,但其重要的优势在于可以编码简单,代码易于理解,适合快速实现。
分类:
其他好文 时间:
2014-09-03 16:26:16
阅读次数:
309
题目链接:uva 1519 - Dictionary Size
题目大意:给出n个字符串组成的字典,现在要添加新的单词,从已有单词中选出非空前缀和非空后缀,组成新单词。问说能组成多少个单词。
解题思路:建立一棵前缀树和一棵后缀树,有多少节点即为有多少个前缀,扣除中间的部分即可加上长度为1的字符串即可。
#include
#include
#include
using name...
分类:
其他好文 时间:
2014-09-01 22:46:13
阅读次数:
261
本站有个翻译的文章,名字叫Ukkonen 的后缀树算法的清晰解释。这篇文章写得不错,但是还是犯了错误的。 我按照这篇文章的说明实现了所谓的Ukkonen算法,但是在测试时出现了错误,事后,进行了大量的排查(因为我一...
分类:
其他好文 时间:
2014-08-28 01:01:18
阅读次数:
400
给定一个字符串s 和 一个包含较短字符串的数组t,设计一个方法,根据t中的每一个较短的字符换,对s进行搜索。思路:基于s建立后缀树,然后在后缀树中进行查找,返回所有可能的索引值。import java.util.ArrayList;public class Question { public ...
分类:
其他好文 时间:
2014-08-26 17:14:26
阅读次数:
270
黑字:认识红字:要学未添加:要学├─模拟├─字符串│ ├─字符串基础│ ├─kmp│ ├─trie│ ├─ac自动机│ ├─后缀数组│ └─后缀树├─搜索│ ├─深度搜索(dfs)│ ├─记忆化搜索│ ├─广度搜索(bfs)│ ├─双向广搜│ ├─回溯│ ├─A*│ ├─迭代深搜│ ├─IDA*│ ...
分类:
其他好文 时间:
2014-08-24 14:10:52
阅读次数:
353
后缀数组搞一下就可以了喵~其实这道题的第一个想法是 SAM ,建完后缀自动机后拓扑排序跑一遍统计下每个子串的出现次数就 O(N) 就妥妥过掉了后缀树也是 O(N) 的,统计一下每个节点对应的子树中有多少个叶子节点即可可是看了一下数据范围,欸呦你妹啊,字符数1000000+1 是什么心态啊!居然把我的...
分类:
其他好文 时间:
2014-08-22 19:35:39
阅读次数:
253
Suffix Trie 又称后缀Trie或后缀树。它与Trie树的最大不同在于,后缀Trie的字符串集合是由指定字符串的后缀子串构成的。比如、完整字符串"minimize"的后缀子串组成的集合S分别如下: s1=minimize s2=inimize s3=nimize s4=imize s5=mi...
分类:
其他好文 时间:
2014-08-22 14:22:59
阅读次数:
207
什么是后缀数组后缀树(Suffix tree)是一种数据结构,能快速解决很多关于字符串的问题,缺点是算法复杂难懂且容易出错。而后缀数组、后缀自动机、后缀仙人掌都是后缀树的替代品。后缀数组 Suffix Array 是一个一维数组,它将字符串S的n个后缀从小到大排序后把排好序的后缀的开头位置顺次放入数...
分类:
其他好文 时间:
2014-08-08 18:00:46
阅读次数:
447
题目是牛仔裤的意思,不过看不出题意和Blue Jeans有什么关系。
本题的数据是很水的,数据量小,故此可以使用非常暴力的方法过,也可以使用不那么暴力的KMP过。
这里使用更加不暴力的Trie后缀树过,这种解法就一点都不水了,呵呵。
思路:
1 建立所有字符串的后缀Trie树
2 增加额外信息,看每过路径是否是所有的字符串都经过了,如果是,那么就是合法的字符串了,查找最长的这样的字符串...
分类:
其他好文 时间:
2014-08-03 10:21:21
阅读次数:
239