SAM PAM 算法模板

本文介绍了SAM(后缀自动机)和PAM(回文自动机)的基础知识,用于处理字符串问题。针对如何记忆这两种自动机,文章提供了背板技巧,并给出了相应的伪代码。虽然当前仅涉及单串问题,但作者承诺会补充广义版本。
摘要由CSDN通过智能技术生成

最近发现我字符串很菜(你这话不对,你不是上个学期就已经是整个机房字符串最菜的吗)。我好像经常忘板子(其实写这篇的时候我已经忘了SA怎么写了)。所以写篇博客吧,若以后再忘可以帮助记忆。

SAM和PAM这两个自动机长得比较像,可以一起记。

这里目前只有基础的版本,只能处理单串问题。广义的版本以后某时再补上(发出咕咕的声音)。

SAM 后缀自动机

如何背板:
记住一个循环:for (; p && !go[p][c]; p = par[p]) go[p][c] = np;
记住一个条件:len[q] == len[p] + 1
记得设根为1,不能用空结点做根

伪代码

设0为空结点,1为根
extend(c) {
    新建 np 并设置 len (其实是设置除par外的所有属性,因为go为空)
    for (!go[p][c]) go[p][c] = np;
    if (!p) par =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值