题目大意:给定一个单词表和m个字符串 问每个字符串的最长的前缀,满足这个前缀可以拆分成一些字符串 使这些字符串都在单词表中出现过
再也不敢看错数据范围了……一道明明用Trie树能解决的问题居然被我写了AC自动机……
将单词表中的单词全都插入AC自动机 每个单词所在的节点记录这个单词的长度
然后对于每个字符串 用f[i]表示长度为i的前缀是否能拆分成单词表中的单词 跑AC自动机
对于每个匹配...
分类:
编程语言 时间:
2014-11-19 01:30:12
阅读次数:
182
输入
输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词。接下来的一行为一个正整数m,表示小Hi询问的次数,其后m行,每一行一个字符串,该字符串由不超过10个的小写英文字母组成,表示小Hi的一个询问。
输出
对于小Hi的每一个询问,输出一个整数...
分类:
其他好文 时间:
2014-11-17 22:55:44
阅读次数:
459
关于字符串的AC自动机,KMP,Trie树,后缀数组。
KMP是基础。当一个字符串与模式串匹配的时,若失配,利用前面匹配的信息,利用三部分连等关系。可以滑动的“恰如其分”。
Next数组的求法:
若此时求的是next[i]的数值,j位置之前的与从i开始后j-1个字符都是匹配的,若s[i]==s[j] 那么next[++i]=++j; 若不相等可以j=next[j]滑动回去。
OK,那么什么...
分类:
其他好文 时间:
2014-11-17 21:24:09
阅读次数:
164
百度资料一大堆,编码过程中要注意这几个数组维护(貌似ACM中树都是用数组——线段树,脸是前向星实现的)
int sz;//节点编号,累加量
int ch[Word_Len][sigma_size];//Trie树
int Have_Word[Word_Len];//该节点下的单词个数
int val[Word_Len];//路径长度
int pre[Wor...
分类:
其他好文 时间:
2014-11-17 14:08:18
阅读次数:
118
题目大意:给定n个字符串,对于每个字符串求以这个字符串为后缀的字符串中第k小的编号
首先将字符串反转 那么就变成了对于每个字符串求以这个字符串为前缀的字符串中第k小的编号
然后考虑对字符串排序 那么对于每个字符串以它为前缀的字符串一定是连续的 那么就转化成了区间第k小 这个用可持久化线段树可以解决
排序自然不能直接排 既然是字符串 考虑Trie树+DFS即可 注意字符串有重复的 小心
#i...
分类:
其他好文 时间:
2014-11-17 14:07:57
阅读次数:
140
数字抽取是非常用用的,常用于数据挖掘/分析,nlp智能处理。比如你要做一个机器人,这个机器人能对数字进行计算。当你问它【请问一千二百0八美分加5毛等于多少钱?】,它要告诉你是XXX美元或者XXX人民币。那么问题来了,它要告诉你结果,首先要知道问的是1208和5这两个数吧,然后需要知道单位和单位换算吧...
分类:
其他好文 时间:
2014-11-13 16:31:37
阅读次数:
362
Cow XORAdrian Vladu -- 2005Farmer John is stuck with another problem while feeding his cows.All of his N (1 ≤ N ≤ 100,000) cows (numbered 1..N) areli....
分类:
其他好文 时间:
2014-11-10 19:44:44
阅读次数:
295
A suffix array is a sorted array of all suffixes of a given string. The definition is similar to Suffix Tree which is compressed trie of all suffixes ...
分类:
其他好文 时间:
2014-11-08 13:38:45
阅读次数:
193
题目大意:给出一些字符串,问其中n个一样的有多少。
思路:看discuss里各种神奇的方法啊,什么map啊,什么Trie啊。这题不是一眼Hash么。。难道是我想错了?
任意hash方法将所有字符串hash然后排序,之后统计一下相同的有多少就行了,500+MS水过。。
PS:明天就是NOIP我这么水真的好(
CODE:
#include
#include
#incl...
分类:
其他好文 时间:
2014-11-07 11:18:00
阅读次数:
165