[CmdOI2019]口头禅

题意

给定(n)个字符串序列({s})(q)次询问,求(s_{l},cdots,s_r)的最长公共子串

做法

考虑正在处理([l,r])内的字符串串,令其最短的字符串长度(in (2^{x-1},2^x])
找到所有长度(in(2^{x-1},2^x]),令其中间那个字符串为(s_{mid})

(s_{mid})作为基串,两边分别做前缀与后缀(方便查询)
总复杂度(O((sum |S|)log^2n))

原文地址:https://www.cnblogs.com/Grice/p/13502536.html