首先把所有串拼起来,后插入的串在前面,得到一个大串. 那么任意时刻,每个串是由这个大串的若干个不相交的子串从左到右拼接而成. 用线段树维护每个串,每个节点维护一个标记,表示区间内的串要加上什么前缀. 用可持久化线段树维护这些串和标记,那么合并就是线段树的合并,因为取值区间互不相交,所以每次合并的复杂度为$O(\log L)$. 这样就可以在$O(m\log n\log L)$的时间内支持区间加操作. 然后考虑如何计算区间LCP,设$height_i=LCP(s_i,s_{i+1})$,那么询问$…