摘要:
"题意" 考虑第一问所求即为该串对应的节点的子树内终止节点的个数,而插入一个字符相当于在新增节点到根节点的链+1,于是用LCT维护。 code: 阅读全文
摘要:
"题意" 因为一个$k$相似必定为$k 1,k 2....0$相似,对于一个$lcp$为$k$后缀对$(i,j)$,我们只用把它的贡献加在$k$的答案上,最后求一个后缀和和后缀max就可以得到答案。 考虑如何快速计算后缀对的贡献: 因为后缀对$(i,j),i j$的$lcp$是$min_{k=i+1 阅读全文
摘要:
"题意" 承接 "上篇题解" 考虑两个后缀的$lcp$是什么,是将串反着插入后缀自动机后两个前缀(终止节点)的$lca$!!!于是可以在parent tree上DP了。 比后缀数组又简单又好写跑的还快。 code: 阅读全文
摘要:
"题意" 考虑将$s1$和$s2$接在一起求出相同子串个数,再求出$s1$自己匹配的相同子串个数和$s2$自己匹配的相同子串个数减去即可。 如何求相同子串个数: 我们知道子串的集合即所有后缀的前缀集合,于是实际上答案就是: $\sum\limits_{i=1}^n\sum\limits_{j=i+1 阅读全文
摘要:
"题意" 考虑式子前面那段其实是$(n 1) \frac{n (n+1)}{2}$,因为每个后缀出现了$n 1$次,后缀总长为$\frac{n (n+1)}{2}$。 现在考虑后面怎么求: $\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^nlcp(sa_i,sa_ 阅读全文