随笔分类 -  后缀自动机 SAM

摘要:洛谷传送门 考虑对反串建 SAM,设 \([i, n]\) 的后缀对应 SAM 的点是 \(a_i\)。 那么 \(\text{lcp}(s[i : n], s[j : n]) = \text{len}(\text{lca}(a_i, a_j))\)。 于是问题变成了,给定一些点,统计两两 \(\t 阅读全文
posted @ 2024-01-10 10:06 zltzlt 阅读(55) 评论(0) 推荐(0)
摘要:洛谷传送门 区间本质不同子串个数。 考虑类比区间数颜色。扫描线扫询问的 \(r = i\),然后对于一个 \(i\) 的后缀 \(S[j : i]\),我们把它上一次出现时的左端点位置 \(-1\),现在的左端点位置(即 \(j\))\(+1\)。那么查询就是 \([l, r]\) 的区间和。 考虑 阅读全文
posted @ 2024-01-10 08:07 zltzlt 阅读(24) 评论(0) 推荐(0)
摘要:洛谷传送门 考虑两个 \(\text{lcs}\) 为 \(t\) 的前缀 \([1, i]\) 和 \([1, j]\)。我们发现可能的左端点取值为 \(\min(|i - j| - 1, t)\)。 考虑建出 SAM。那么两点的 \(\text{lca}\) 的 \(\text{len}\) 就 阅读全文
posted @ 2024-01-09 15:06 zltzlt 阅读(28) 评论(0) 推荐(0)
摘要:洛谷传送门 CF 传送门 首先对 \(s\) 建 SAM,设 \(m = |t|\),然后考虑断环为链,把询问串 \(t\) 再复制一份拼接在后面,然后相当于问现在 \(t\) 的所有长度为 \(m\) 的本质不同子串在 \(s\) 中的出现次数之和。 考虑枚举子串的右端点,维护当前在 SAM 上的 阅读全文
posted @ 2023-12-11 22:05 zltzlt 阅读(38) 评论(0) 推荐(0)