[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)\)

posted @ 2020-08-14 15:31  Grice  阅读(102)  评论(0编辑  收藏  举报