数据结构——字典树
倚剑笑紅尘
教练,我想学kaldi!
展开
-
字典树(基础学习)
背景和定义: 在算法导论中,Trie并不叫字典树,而是叫基数树,也就是说实际上并不是只是和字符串有关。字典树的构造结果 如果说和字符串本身没有关系的话,实际上是一个N叉树。在这个N叉树上,如果是共父节点的N个子节点是有序 的,这样构造出来的树实际上就和字典树很像了。 言归正传,我们下面来讨论字典树。字典树的功能实际上是对于很多的串进行压缩,压缩的方法是根据这个字符串 的前缀。原创 2017-07-26 17:49:15 · 396 阅读 · 0 评论 -
POJ 2503 Babelfish(字典树Trie)
题目链接:点击打开链接 题目大意: 给你一个标准英语单词到方言单词的映射表,然后再给你一系列的方言单词,要你输出每个方言单词对应的英语单词。 思路: 本题直接用map映射查找很可能会超时,所以用字典树Trie来处理。字典树节点v=0表示非单词节点,如果v=1表示单词节点,并且字典树节点还有一个string属性,用来保存对应的每个方言单词对于的英语单词原创 2017-08-30 17:50:02 · 244 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes(字典树Trie)
POJ 2001 Shortest Prefixes(字典树Trie) http://poj.org/problem?id=2001 题意: 给你多个单词组成的词典,现在要你输出每个单词对应的前缀,使得每个前缀唯一。如果不存在唯一前缀就直接输出单词本身。比如字典里面有car 和caraaab 两个单词,那么对于caraaab就输出cara,对于car就输出car。 分析:原创 2017-08-30 17:13:47 · 171 阅读 · 0 评论 -
字典树Trie
字典树Trie 字典树又叫单词查找树(Trie)或前缀树(可见刘汝佳《算法竞赛入门经典训练指南》P208)。顾名思义它是与单词的前缀相关的。给你一个单词和一个字典构成的字典树,你可以在O(m)(m为所给单词的长度)时间内判断出该单词是否属于字典。但是如果你用KMP或其他暴力方法,你至少需要把字典中所有单词都遍历一遍。 下图是一个具有单词abc,abcd,b,bcd,efg,hi转载 2017-08-30 00:23:54 · 294 阅读 · 0 评论 -
HDU 1247 Hat’s Words(字典树Trie)
HDU 1247 Hat’s Words(字典树Trie) http://acm.hdu.edu.cn/showproblem.php?pid=1247 题意: 给你多个单词组成的字典,要你从中找出这样的单词,该单词正好是字典中另外两个单词(可相同)首尾相连构成的。按字典序输出所有要找的单词。 分析: 首先用所有单词建立字典树,然后遍历每个单词。将当前单词原创 2017-08-30 00:20:33 · 178 阅读 · 0 评论 -
HDU 1671 Phone List(字典树Trie)
HDU 1671 Phone List(字典树Trie) http://acm.hdu.edu.cn/showproblem.php?pid=1671 题意: 给你多个由0-9构成的字符串集合,问你这个集合中是否有一个字符串是其他字符串的前缀? 分析: 直接构造字典树,然后一一插入每个字符串,判断是否有比当前字符串短或长的同一路径的字符串已经在树中了.原创 2017-08-30 00:12:56 · 197 阅读 · 0 评论 -
UVA 1401 Remember the Word(DP+字典树Trie)
UVA 1401 Remember the Word(DP+字典树Trie) https://vjudge.net/problem/UVA-1401 题意: 给你一个由N个单词组成的词典,和一个字符串S。问你S由N中的单词组成的方法有多少种?字典中的单词可以重复使用但是不可重叠。 分析: 我们令d[i]=x表示S串的后缀[i,L-1]串有多少种构成方式原创 2017-08-29 23:19:43 · 185 阅读 · 0 评论 -
hihocoder 1366 逆序单词
题目链接: 题意:求一组字符串中有多少字符串是和另一个字符串的逆序是一致的 思路:使用在线的算法,每次读入一个字符串的时候,先进行查询(正序),随后进行插入(逆序) 代码: #include #include #include #include using namespace std; struct node { node *nxt[26]; int flag; node()//构原创 2017-07-26 17:20:11 · 275 阅读 · 0 评论 -
poj 2001 Shortest Prefixes(字典树)
题目链接:poj2001 题目大意:给出一些字符串 ,求最短的区别前缀(即这个前缀是独一无二的且要尽可能小) 思路:只要在字典树上记录所有的节点的记录次数,这个时候只要查到一个次数只有1的时候就可以了。 因为1的是时候说明只有一个单词的前缀经过。 #include #include #include #include using namespace std; struct node {原创 2017-07-26 17:39:50 · 359 阅读 · 0 评论 -
hdu5536 Chip Factory(01字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:求max( (a[i] + a[j]) ^ a[k] ) (i, j, k都不相同) ^异或 思路:一开始的想法就是n^3的暴力枚举,发现复杂度太大之后开始逐步优化。 第一次的想法就是n^2的枚举a[i]和a[j],然后对已经从小到大排序完之后的a【】数组进行二分查找来从左往右...原创 2018-09-25 12:07:24 · 192 阅读 · 0 评论