![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构——字典树
倚剑笑紅尘
教练,我想学kaldi!
展开
-
字典树(基础学习)
背景和定义:在算法导论中,Trie并不叫字典树,而是叫基数树,也就是说实际上并不是只是和字符串有关。字典树的构造结果如果说和字符串本身没有关系的话,实际上是一个N叉树。在这个N叉树上,如果是共父节点的N个子节点是有序的,这样构造出来的树实际上就和字典树很像了。言归正传,我们下面来讨论字典树。字典树的功能实际上是对于很多的串进行压缩,压缩的方法是根据这个字符串的前缀。原创 2017-07-26 17:49:15 · 393 阅读 · 0 评论 -
POJ 2503 Babelfish(字典树Trie)
题目链接:点击打开链接题目大意: 给你一个标准英语单词到方言单词的映射表,然后再给你一系列的方言单词,要你输出每个方言单词对应的英语单词。思路: 本题直接用map映射查找很可能会超时,所以用字典树Trie来处理。字典树节点v=0表示非单词节点,如果v=1表示单词节点,并且字典树节点还有一个string属性,用来保存对应的每个方言单词对于的英语单词原创 2017-08-30 17:50:02 · 243 阅读 · 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 · 292 阅读 · 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 · 177 阅读 · 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 · 180 阅读 · 0 评论 -
hihocoder 1366 逆序单词
题目链接:题意:求一组字符串中有多少字符串是和另一个字符串的逆序是一致的思路:使用在线的算法,每次读入一个字符串的时候,先进行查询(正序),随后进行插入(逆序)代码:#include#include#include#includeusing namespace std;struct node{ node *nxt[26]; int flag; node()//构原创 2017-07-26 17:20:11 · 256 阅读 · 0 评论 -
poj 2001 Shortest Prefixes(字典树)
题目链接:poj2001题目大意:给出一些字符串 ,求最短的区别前缀(即这个前缀是独一无二的且要尽可能小)思路:只要在字典树上记录所有的节点的记录次数,这个时候只要查到一个次数只有1的时候就可以了。因为1的是时候说明只有一个单词的前缀经过。#include#include#include#includeusing namespace std;struct node{原创 2017-07-26 17:39:50 · 351 阅读 · 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 · 190 阅读 · 0 评论