字典树练习(一)hihocoder 1014(求相同前缀的数目)...
分类:
其他好文 时间:
2015-04-29 11:41:08
阅读次数:
142
#include using namespace std;
const int MA=10;
const char MU='0';
struct dian
{
int sum;
dian *next[MA];
dian ()//构造函数
{
sum=0;
for(int i=0;i<MA;++i)
next[i...
分类:
其他好文 时间:
2015-04-28 09:39:59
阅读次数:
129
??
字典树:又称为Trie,是一种用于快速检索的多叉树结构。Trie把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。
注意:和二叉查找树不同的是,其节点并非存储一个元素。
优点:1、利用公共内存,以达到节约内存的目的
2、根节点只存储其子树,不存储字母
3、每个节...
分类:
其他好文 时间:
2015-04-27 09:57:28
阅读次数:
126
字典树:顾名思义,是通过字符来查找,不过只是统计以某个字符或字符串为前缀的单词个数,字典中无此前缀,返回0;有则返回个数。创建树:根据所给字符串,依次遍历字符串件数,如果存在,num++,查看下一个字符。不存在,建立新的节点,n++,查看下一节点。直到遍历完字符串为止。查看:大体操作和创建一样,遍历...
分类:
其他好文 时间:
2015-04-27 00:24:50
阅读次数:
155
题目大意:
给你一本字典。字典上每一行为一个英语单词和一个其他国家单词。这样我们就可以通过字典把英语单词
翻译成其他国家单词,也可以将其他国家单词翻译为英语单词了。现在再给你几个外国单词,问:字典中
是否有这个单词的翻译。如果有,就输出翻译,否则,输出"eh"。
思路:
这道题其实可以用STL中的map或是字典树来做。map的做法是,建立两个map,一个对应存放翻译,一
个用来判断翻译是否存在。注意输入可以先将一行输入进来,判断是否为"\n"。再用sscanf将英语单词和
其他国家单词拆分为两个字符串s,...
分类:
其他好文 时间:
2015-04-26 16:44:25
阅读次数:
130
/**
异或最大值(01字典树)
题意:求n个非负数中任意2个的异或值的最大值。n数量级为10^5
分析:直接暴力肯定超时了。一个非负整数可以看成1个32位的01字符串,n个数可以看成n个字符串,因此可以建立字典树,
建好树后,对于任意非负整数x,可以沿着树根往下贪心找到y,使得x异或y最大,复杂度为树的深度。
*/
#include
#include
#include
#in...
分类:
其他好文 时间:
2015-04-26 12:27:34
阅读次数:
177
题目大意:
给你N个字符串,判断这N个字符串中是否存在一个字符串是另一个字符串的前缀,如果存在就
输出"NO",否则输出"YES"。
思路:
建立一个字典树,将N个字符串存入字典树中,统计前缀出现次数。再查找这N个字符串,如果
出现字符串出现次数>1,则说明重复出现了两次,就输出"NO"。如果都每出现,则输出"YES"。
这道题如果每次都不删字典树,清除空间的话,会超内存。所以加上清空字典树的操作。...
分类:
其他好文 时间:
2015-04-26 12:26:59
阅读次数:
108
http://acm.hdu.edu.cn/showproblem.php?pid=1251
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行...
分类:
其他好文 时间:
2015-04-23 21:45:57
阅读次数:
148
hdu1251 交c++可以过,g++就MLE#include#include#include#includeusing namespace std;struct Trie{ Trie *next[26]; int v;};void creatTrie(Trie *root,char *...
分类:
其他好文 时间:
2015-04-23 01:52:28
阅读次数:
168