对于一个 f(t[l: r)),我们知道算 |s_{i}| \le r - l 的串产生的贡献可以拆成前后缀全局加减(上文提到过)。于是对于 mx \le r - l 的块我们就可以这样算贡献。前后缀和全局的次数是可以使用 ACAM 计算的,复杂度是 O\left((|t| + m) \sqrt{\frac{S}{B}}\right) 的。
接下来我们就只需要考虑 mn \le r - l < mx 的块所产生的贡献了。我们想如果我直接将 t[l: r) 放 ACAM 里跑一边肯定是对的,但是时间复杂度是 O(\sum{r - l}) 的,肯定无法接受。再详细研究一下发现只有你的指针到了 [l + mn, r] 的位置才有可能对答案产生贡献。这一部分是可以暴力跑的,这是因为 r - l - mn < mx - mn \le B,所以时间复杂度是 O(m B) 的。