明明是唯一一道区分题能不能认真点啊喂(
怎么出得这么 naive 啊(
首先用任何一种后缀数据结构对 1≤i≤|S| 求出 li=max{j∣Si−j+1…i∈substrings(T)}
那么容易发现答案即是 max{min(li,i−l+1)∣l≤i≤r}。
讨论一下 i−li+1 的大小,容易发现其有单调性,可以二分然后 RMQ。
线性的话离线双指针然后 O(1) RMQ 即可。
代码:
1 |
|
明明是唯一一道区分题能不能认真点啊喂(
怎么出得这么 naive 啊(
首先用任何一种后缀数据结构对 1≤i≤|S| 求出 li=max{j∣Si−j+1…i∈substrings(T)}
那么容易发现答案即是 max{min(li,i−l+1)∣l≤i≤r}。
讨论一下 i−li+1 的大小,容易发现其有单调性,可以二分然后 RMQ。
线性的话离线双指针然后 O(1) RMQ 即可。
代码:
1 | #include <cstdio> |