当前位置:首页 > 字符串 > AC自动机 > 正文
洛谷P3796【模板】AC自动机(加强版)
2665+

题目大意:n个模式串和1个文本串,请问文本串里面出现最多的模式串是哪些?输出最大出现次数和对应的文本串。

题目描述

个由小写字母组成的模式串以及一个文本串。每个模式串可能会在文本串中出现多次。你需要找出哪些模式串在文本串中出现的次数最多。

输入输出格式

输入格式:
输入含多组数据。

每组数据的第一行为一个正整数,表示共有个模式串,

接下去行,每行一个长度小于等于的模式串。下一行是一个长度小于等于的文本串

输入结束标志为

输出格式:
对于每组数据,第一行输出模式串最多出现的次数,接下去若干行每行输出一个出现次数最多的模式串,按输入顺序排列。

输入输出样例

输入样例#1:

2
aba
bab
ababababac
6
beta
alpha
haha
delta
dede
tata
dedeltalphahahahototatalpha
0
输出样例#1:

4
aba
2
alpha
haha

解题思路

需要统计每个单词出现次数,并输出最多次数的单词,那么我们就需要把单词保存下来,并且在Trie树单词结尾位置标记属于哪个单词。

与简单版不同的是,在匹配的时候,不管该位置有没有单词,都要往回退,看看以文本串第i个字母结尾是否存在单词(可能是多个)。

最后就是统计单词次数、查找最大次数、输出最大次数和最大次数的单词。

程序实现

About

坚决不Copy代码!

本文标签:,,,,,

洛谷P3796【模板】AC自动机(加强版):等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!