有多个主串,每次询问将询问串分成多个连续子串,如果一个子串长度$\ge L$且在主串中出现过就是合法的
如果合法的子串总长度$\ge$询问串长的$90\%$%,这个串就是合法的字符串,求使得询问串成为合法的字符串的最大的$L$
$L$具有单调性。考虑二分答案。即使得子串长度$\geq L$,使得合法的长度尽可能得大。
考虑$dp[i]$为$[1,i]$中含有合法子串最长长度。
$maxlen_i$表示从询问串第$i$位最多能往后匹配多长。可以预处理出来。
考虑$i-maxlen_i$,不严格递增。单调队列维护窗口最大值即可。
代码
1 |
|