|
||||||||||
重叠的子串Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 368 Accepted Submission(s): 86 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]$。 Sample Input
Sample Output
Source | ||||||||||
|