2026 Summer Day22
P3809 【模板】后缀排序
题目链接
发现还是忘了很多的。
我们用倍增的思想来处理 rki 和 sai,每次倍增地枚举长度 k,用二元组 (rki,rki+k) 来排序,就可以对子串进行排序。用计数排序可以将复杂度降低至 O(nlogn)。
code
P4248 [AHOI2013] 差异
题目链接
可以直接将题目中的式子转化为:
2(n−1)n(n+1)+i,j∑LCP(s[i...n],s[j...n])
后面的 LCP(s[i...n],s[j...n]) 可以通过处理 height 数组,并用单调栈处理最值区间解决。复杂度 O(nlogn)。
code
P2408 不同子串个数
题目链接
之前写过了,还是整理一下,有点忘记了。
使用后缀数组。由于已经将后缀排过序了,那么对于每一个 LCP(sarki,sarkI−1),都已经由 sarki−1 统计过了。所以答案就是 2n(n−1)−∑heighti。
code
Comments
Quiet notes for this article.