SAM题目合集
一些SAM的 基础 题目。(主要是我不想写SAM的原理啊啊啊)
有的题目是SA的思维题,但是可以用SAM平推,基本上可以不动脑子。
除非有特殊说明,否则将字符集看作所有小写字母,构造SAM复杂度记为
基础SAM
Luogu【模板】后缀自动机 (SAM)
求
串中出现次数不为 的子串的出现次数乘上子串长度的最大值。
对于某一个等价类对应的节点
总体复杂度
Luogu P2408 不同子串个数
求
串的不同子串个数。
等价于 SAM 上路径数,DP求值即可。
总体复杂度
SPOJ LCS-Longest Common Substring
求串
和 的最长公共字串。
等价于求
考虑在
如果
否则
由于
[SDOI2016]生成魔咒
动态求不同字串个数。
不同字串个数也等价于
总体复杂度
[TJOI2019]甲苯先生和大中锋的字符串
求
串中出现 次的子串中出现次数最多的长度。
可以
单次复杂度为
CF802I Fake News (hard)
求出每个子串在
中出现次数的平方和。
对于每个
单次复杂度为
[TJOI2015]弦论
求出
中第 小的子串。
每一个字串对应
总体复杂度为
[BJOI2020] 封印
给定
,求 和 的最长公共子串。
先建出
最终答案相当于是
将所有询问离线下来,用线段树维护答案即可。
总体复杂度为
CF235C Cyclical Quest
给定串
,询问 的所有循环同构在 中的出现次数之和。
考虑将
对
总体复杂度
CF427D Match & Catch
问
和 中均只出现过一次的串的长度的最小值。
考虑建出
与一般匹配不同的是,我们还需要维护
但由于这个值是单调的,所以只需要维护出经过它的最大的两个
最后在所有
总体复杂度
[HAOI2016] 找相同字符
给定两个字符串
和 ,问有多少个对不同的 的子串和 的子串相等。
考虑某一个字符串的贡献,等于
对应到
所以,最终答案为
总体复杂度
[CTSC2012]熟悉的文章
给定
个 串 ,询问 个串 ,问满足存在一种 拆分方式,使得长度大于 的是 中某一个串的子串的串的总长度 。
考虑将所有的串
找到
使用 DP 维护单次转移:记
则
由于
整体复杂度
CF653F Paper task
给定一个长为
的由'('和')'组成的字符串,问其有多少个本质不同的子串是合法的括号串。
考虑建出SAM,一个字符串的贡献我们在它对于
使用动态开点线段树维护以每一个位置为结尾有那些起点对应合法的括号串,直接区间查询即可。
时间复杂度
SAM+可持久化线段树合并
有的时候我们需要在线快速查询 SAM 上某一个节点的
给国的字符串
询问
个串 ,在 中可以找到多少个互不相交的子串 。
记
如果已经知道了
尝试维护这个贪心的过程,我们可以通过在 SAM 上维护每一个节点的
但是,我们发现对于 a
在 aaaa...aa
出现的次数,会被卡到 TLE 。
考虑根号分治: 对于
由于一次暴力维护是
由于
当
[NOI2018] 你的名字
给定字符串
, 次询问,求 从有多少个子串是 中没有出现的( 表示 串中第 位到第 位)。
首先考虑
让
然后再在
但是考虑到我们匹配的可能是
考虑用可持久化线段树合并维护
也有一种可能,就是
总体复杂度
CF1037H Security
次询问,询问 中字典序大于 的字典序最小的串。
考虑建出
将
如果没有,则表示
找到
总体复杂度
[HEOI2016/TJOI2016]字符串
给定字符串
, 次询问,求最长的 使得 中长为 的后缀是 的子串。
首先将
由于答案是可二分的,考虑二分答案:
我们通过
总体复杂度
CF666E Forensic Examination
给定字符串
,和一个些字符串 , 次询问,问在 中, 出现次数最多的串中编号最小是哪一个,并输出出现次数。
考虑建出
使用可持久化线段树合并维护每个点的
查询
总体复杂度
广义SAM
有的时候我们需要几个串的子串信息,所以考虑将若干个串建到同一个 SAM 中,考虑到 SAM 中的 nxt
数组就是维护了一个 Trie 树,所以考虑在建立 Trie 树的过程中建立 SAM ,由于 SAM 中会所用到之前的节点,所以考虑在 Trie 树上广搜来实现。
Luogu【模板】 广义后缀自动机(广义 SAM)
询问若干个串
中一共有多少个本质不同的子串。
就是基本的建立 SAM 的过程,最后求出
总体复杂度
CF452E Three strings
有三个串
,对于每一个 ,问有多少对 ,满足 ,答案对 取模。
建出广义SAM,维护每一个节点对于
总体复杂度
CF204E Little Elephant and Strings
有
个字符串,对于每一个串,询问其有多少个子串在至少 个串中出现过。
建出广义SAM,使用动态开点线段树维护出
在
总体复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现