1.1、什么是Trie树
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。
Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
它有3个...
分类:
其他好文 时间:
2015-03-30 11:27:50
阅读次数:
199
Babelfish
Time Limit: 3000MS
Memory Limit: 65536K
Total Submissions: 34816
Accepted: 14908
Description
You have just moved from Waterloo to a big city. The people here ...
分类:
其他好文 时间:
2015-03-30 09:23:04
阅读次数:
169
AC自动机
直接学AC自动机比较难理解,强烈建议先学完KMP和字典树并进行一定的练习后,对于失配指针和字典树构造有一定理解后再来学AC自动机的内容。有关AC自动机的详细介绍可见刘汝佳的《算法竞赛入门经典训练指南》P214.
给你一个字典(包含n个不重复的单词),然后给你一串连续的字符串文本(长为len),问你该文本里面的哪些位置正好出现了字典中的某一个或某几个单词?输出这些位...
分类:
其他好文 时间:
2015-03-29 23:50:15
阅读次数:
535
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?...
分类:
其他好文 时间:
2015-03-21 18:44:22
阅读次数:
130
题解:
首先我们处理出来sum[0,n]sum[0,n]作为异或前缀和,然后答案就不再是[l,r][l,r]中间某段区间的异或和,而转化成求了[l?1,r][l-1,r]中任意两点异或和的最大值。
然后我们分块处理出fi,jf_{i,j}表示 [第i块的开头,j?1][第i块的开头,j-1] 这段区间中任取一点和点jj异或和的最大值,而用gi,jg_{i,j}做个类似前缀和的操作,记录第ii块...
分类:
其他好文 时间:
2015-03-20 22:07:44
阅读次数:
223
题目:给你一组电话号码,判断是否有一些号码是其他的前缀(或相等)。
分析:字符串,字典树。利用字典树储存查询即可,注意两种情况处理:
1.先短后长(前缀在前);2.先长后短(前缀在后)。
说明:第580题了,目标600╮(╯▽╰)╭。
#include
#include
#include
#include
#include
#include
using...
分类:
其他好文 时间:
2015-03-15 10:58:51
阅读次数:
150
Problem Description
A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.
You are to find all the hat’s words in a dictionary.
Input
Standard input consists of a number of lowercase words, one p...
分类:
其他好文 时间:
2015-03-14 18:42:53
阅读次数:
141
题意:给定N个字符串,让你依次先输入到手机的字典中,再打印出来,打印的时候我们只需要输出字符串的前缀或者全部字符串,要求此前缀不是以往任何字符串的前缀。
题解:典型的字典树,可以利用结构体数组方便的新建与查询,速度比链表更快。只需在插入字符串时统计最长相同的前缀即可。代码如下:#include
#include
#include
using...
分类:
其他好文 时间:
2015-03-14 18:38:24
阅读次数:
159
题目:给你一个小写字母组成大的串和一个整数n,找到里面长度为n出现最频繁的子串。
分析:字符串、hash表、字典树。这里使用hash函数求解,只做一次扫描即可。
说明:如果频率相同输出字典序最小的。
#include
#include
#include
#include
char subs[15],buf[1000001];
char *strsub(char *str, int ...
分类:
其他好文 时间:
2015-03-13 18:46:34
阅读次数:
151
在计算机科学中,trie,又称前缀树或字典树,是一种有种树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只.....
分类:
其他好文 时间:
2015-03-13 17:57:42
阅读次数:
106