洛谷P3796【模板】AC自动机(加强版)
2202+
作者:crxis 发布:2018-08-30 分类:AC自动机
题目大意:n个模式串和1个文本串,请问文本串里面出现最多的模式串是哪些?输出最大出现次数和对应的文本串。
题目描述
有个由小写字母组成的模式串以及一个文本串。每个模式串可能会在文本串中出现多次。你需要找出哪些模式串在文本串中出现的次数最多。
输入输出格式
输入格式:
输入含多组数据。
每组数据的第一行为一个正整数,表示共有个模式串,。
接下去行,每行一个长度小于等于的模式串。下一行是一个长度小于等于的文本串。
输入结束标志为。
输出格式:
对于每组数据,第一行输出模式串最多出现的次数,接下去若干行每行输出一个出现次数最多的模式串,按输入顺序排列。
输入输出样例
输入样例#1:
2 aba bab ababababac 6 beta alpha haha delta dede tata dedeltalphahahahototatalpha 0
输出样例#1:
4 aba 2 alpha haha
解题思路
需要统计每个单词出现次数,并输出最多次数的单词,那么我们就需要把单词保存下来,并且在Trie树单词结尾位置标记属于哪个单词。
与简单版不同的是,在匹配的时候,不管该位置有没有单词,都要往回退,看看以文本串第i个字母结尾是否存在单词(可能是多个)。
最后就是统计单词次数、查找最大次数、输出最大次数和最大次数的单词。