#P7091. 重叠的子串
重叠的子串
Problem Description
给定一个只含小写字母的字符串 $s$ 和 $q$ 次询问,每次询问给定一个字符串,以 $s[l .. r]$ 的形式给出,判断 $s$ 中是否存在两个或多个出现的有重叠部分的给定子串。比如在 “ababa” 中,两个 “aba” 子串就重叠于中间的字母 “a”,而两个 “ab” 子串就没有发生重叠。$T$ 组数据。
Input
第一行一个正整数 $T(1\le T \le 20)$,表示数据组数。
对于每组数据:
第一行两个整数 $n,q\,(1\le n \le 10^5, 1\le q \le 10^6)$,表示给定字符串的长度及询问个数。
第二行一个长度为 $n$,且只包含小写字母的字符串 $s$。
接下来 $q$ 行,每行两个整数 $l,r\,(1\le l \le r \le n)$,表示一次询问。
保证所有数据的 $\sum n \le 6\times 10^5, \sum q \le 3\times 10^6$。
Output
对于每组数据:
输出共 $q$ 行,每行一个字符串 “Yes” 或者 “No”(均不含引号),分别表示存在以及不存在有重叠部分的多个子串 $s[l .. r]$。
2
10 3
georgeorge
1 5
1 4
5 10
18 5
huaweihuaweihuawei
1 2
3 6
7 11
12 18
1 18
Yes
No
Yes
No
No
No
Yes
No