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
题目大意:
一个"hat's word"是一个单词,可以恰好由字典中其他两个单词连接得到(比如字典中是hat's和word)。
给出字典中的单词,输出所有的hat's word。
思路:
建立字典树,将每个单词都插入到Trie树中,Count统计单词(不是前缀)出现次数。按顺序将每个单词
所有可能的长度拆分成前缀单词和后缀单词,判断这两部分是否都在字典树中,是就是hat's word,
进行输出,否则继续拆分当前单词或下一单词。...
分类:
其他好文 时间:
2015-04-22 14:01:55
阅读次数:
124
简单的字典树题,首先简历字典树,在查找。
#include
using namespace std;
struct Tri
{
int v;
Tri* child[26];
} root;
void Init()
{
root.v=0;
for(int i=0;i<26;i++)
{
root.child[i]=NULL;
}
}
void CreateDic(ch...
分类:
其他好文 时间:
2015-04-21 09:46:41
阅读次数:
122
uva 11008 Antimatter Ray ClearcuttingIt’s year 2465, and you are the Chief Engineer for Glorified Lumberjacks Inc. on planet Trie. There is a number of trees that you need to cut down, and the only wea...
分类:
其他好文 时间:
2015-04-21 09:45:12
阅读次数:
194
分析:字典树解决,注意节点里面只需要保存该点是否构成一个单词,和匹配类型的题有所区别;另外要注意重读打印。字典树效率高。
#include
using namespace std;
struct Tri
{
bool v;
Tri* child[26];
};
Tri* root;
void Init()
{
root->v=false;
for(int i=0;i<26;...
分类:
其他好文 时间:
2015-04-21 00:27:07
阅读次数:
148
思路:完全看题目中的介绍就行了。还有里面的input写道:不保证是英文单词,也有可能是火星文单词哦。比赛结束后的提交是不用考虑26个字母之外的,都会AC,如果考虑128种可能的话,爆了内存。步骤就是,在插单词的同时记录该结点之后的单词数,查词就查最后一个字母所在结点上的单词数。 1 #include...
分类:
其他好文 时间:
2015-04-21 00:14:44
阅读次数:
244
题目描述 Trie树概念相对简单。 如果是用于保存英文词典,时空效率都是不错的。 如果保存中文词典,对子节点的索引可能需要用一个哈希表来存。 在建树的过程中可以顺便统计特定前缀的单词数。 如果要求重复单词不重复统计,可以在插入前先查询一次。 本题的具体代码如下:#include #include #...
分类:
其他好文 时间:
2015-04-20 20:34:46
阅读次数:
137
不敢去做一件事就会一直觉得它很难。。
以前一直觉得AC自动机应该超难写,学了以后发现实在太好写了。。
AC自动机的fail指针与KMP算法的next数组是极为相似的,都是通过这些来减少冗余的扫描,所以我也把AC自动机的fail指针名字直接开成next了。。
AC自动机与KMP的不同在于KMP是单模式串匹配,AC自动机是多模式串匹配,所以AC自动机可以理解为就是在trie树上加上一些next指...
分类:
其他好文 时间:
2015-04-18 10:05:17
阅读次数:
178
题目链接:http://poj.org/problem?id=2503
//做了几道trie得出了一条结论,,,当单词的长度超过15时,,适合hash,,,不超过15时适合trie,,,,
//因为trie的常数主要乘在了单词长度的循环上,,,,,而hash在这个循环的常数基本是1,,,但是hash此外需要处理冲突,,单词越长,,发成冲突的可能性就越小,,解决冲突的时间就越...
分类:
其他好文 时间:
2015-04-18 08:51:09
阅读次数:
129
struct TrieNode
{
int Count;
struct TrieNode* Next[26];
}Tree,*Trie;
TrieNode *root;
void Create() //初始化
{
root = new TrieNode;
memset(root->Next,NULL,sizeof(root->Next));
root-...
分类:
其他好文 时间:
2015-04-15 11:26:35
阅读次数:
131