随笔分类 -  字符串-SAM

摘要:tag:SAM,矩阵乘法,分治 首先我们要知道一个 trick,如何把两个 SAM 拼起来。 大概就是对于第一个 SAM 上的所有点,如果某个字符 \(c\) 没有出边,就连向第二个 SAM 的根结点的 \(c\) 出边指向的点。 这样最后会构造出来一个自动机,每一条路径都对应着一个题目中要求的字符 阅读全文
posted @ 2021-07-09 08:41 oisdoaiu 阅读(32) 评论(0) 推荐(0)
摘要:tag:SAM,矩阵乘法,分块 首先我们要知道一个 trick,如何把两个 SAM 拼起来。 大概就是对于第一个 SAM 上的所有点,如果某个字符 \(c\) 没有出边,就连向第二个 SAM 的根结点的 \(c\) 出边指向的点。 这样最后会构造出来一个自动机,每一条路径都对应着一个题目中要求的字符 阅读全文
posted @ 2021-07-08 16:45 oisdoaiu 阅读(31) 评论(0) 推荐(0)
摘要:tag:SAM,LCT,线段树 LCT+SAM维护endpos套路,先建出SAM,然后从左到右Access(pos[i])的同时处理询问。 每次Access的时候到根链会分成若干段,每段的endpos相同,所以对于这个点代表的某个串来说,当询问的 \(l\le endpos-len+1\) 时,这个 阅读全文
posted @ 2021-07-02 16:38 oisdoaiu 阅读(38) 评论(0) 推荐(0)
摘要:后缀自动机(SAM) 节点意义:记录一组$r$相同的长度连续的子串$s[l:r]$,$len(x)$表示最长的一个 $son$指针意义:在x记录的每一个子串后面都加上$c$后可以得到son(x,c)中的一个连续段(本质上是一个映射关系) son指针仅仅是单向映射关系,因此可能会有多个y指向同一个x, 阅读全文
posted @ 2021-07-01 15:20 oisdoaiu 阅读(299) 评论(0) 推荐(0)
摘要:tag:SAM 提供一种不用广义$SAM$的做法 对$s$建$SAM$,然后用$t$去跑匹配,对于当前$i$,匹配到的节点为$cur$,匹配长度为$nowlen$ 若$cur$不是$SAM$的$parent$树叶子节点,则continue 否则说明$t$中$len\in[len(fa(cur))+1 阅读全文
posted @ 2021-07-01 15:15 oisdoaiu 阅读(43) 评论(0) 推荐(0)
摘要:tag:SAM,倍增 贡献一个用广义$SAM$,不用大力数据结构的做法 把问题分成两部分解决 求一个字符串在多少个$a_i$中出现过 枚举一个串的一个点$i$,求以$i$为右端点的,在至少$k$个$a_i$中出现过的字符串个数 Case 1 对于第一个问题,可以建广义$SAM$,记录$_j$在$SA 阅读全文
posted @ 2021-07-01 15:14 oisdoaiu 阅读(49) 评论(0) 推荐(0)
摘要:6.1还在考试的屑 tag:SAM,PAM 最终的回文串一定由这样的形式组成: \(s1+s2+s3\) 其中 \(s1\) 为 \(a\) 串子串,\(s3\) 为 \(b\) 串子串,且 \(s1=rev(s3)\)。 \(s2\) 为一个回文串(可以是 \(a\) 的子串也可以是 \(b\) 阅读全文
posted @ 2021-06-25 09:09 oisdoaiu 阅读(34) 评论(0) 推荐(0)