题目链接
题意
给你若干个字符串,每次询问一个$S$,$T$分别作为前缀和后缀不重叠的字符串的数量有多少。
思路
直接找不好找,我们可以这样建AC自动机:
每个原串变成$str+$’#’$+str$,每个前缀后缀变成‘#’插入AC自动机,这样我们查询就可以满足前缀和后缀。
还有一个条件,要求不能重叠,那我们再加上一个长度限制就好了。
Code
1 |
|
给你若干个字符串,每次询问一个$S$,$T$分别作为前缀和后缀不重叠的字符串的数量有多少。
直接找不好找,我们可以这样建AC自动机:
每个原串变成$str+$’#’$+str$,每个前缀后缀变成‘#’插入AC自动机,这样我们查询就可以满足前缀和后缀。
还有一个条件,要求不能重叠,那我们再加上一个长度限制就好了。
1 | #include<bits/stdc++.h> |