当前位置: 首页 > news >正文

7.28SAM后缀自动机,回文自动机

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 20 ; 
struct SAM{int t[N][26] , link[N] , len[N];int last ,tot ; SAM() : last(1) , tot(1){}void insert(int c){int p = last , np = last = ++tot ; //p是之前的节点 np是现新建的节点len[np] = len[p] + 1 ; //首先会多一个endpos为n的,其他的不可能和他重复while( p and !t[p][c] )t[p][c] = np , p = link[p];//link[p]相当于fail指针 向上跳使得s -> s的后缀 在后缀上->一个 就相当于是一个新的子串if(!p)link[np] = 1 ;//如果跳到根了,说明没有与他相同的子串,所以失配只能跳到根else{//如果有和他一样的子串int q = t[p][c] ; if( len[q] == len[p] + 1)link[np] = q ;//如果说是s+c的等价后继类是s的等价类最长的+1 ,那么他就是等价后继类else{int nq = ++tot ; memcpy( t[nq] , t[q] , sizeof(t[q]));//转移函数不变len[nq] = len[p] + 1 ; //新加了一个c所以长度+1link[nq] = link[q] ;///*如图nq/  \q    np */link[np] = link[q] = nq ;//while( p and t[p][c] == q )t[p][c] = nq , p = link[p];//更新其他的到他的节点}}}
}
http://www.sczhlp.com/news/778.html

相关文章:

  • Linux开机自动登录的一种方法
  • day5
  • JAVA语言学习总结(第27天)
  • CVE-2021-45232 Apache APISIX Dashboard身份验证绕过漏洞 (复现)
  • IIS中配置HTTPS证书的详细步骤
  • Python入门学习(七)高级部分:正则表达式
  • 在运维工作中,如果运行的一个容器突然挂了,如何排查?
  • SciTech-EECS-Library: img2pdf 与 pdf2image : Python 的 pdf 与 image 双向转换库
  • 在运维工作中,docker封闭了哪些资源?
  • 深度学习(pytorch量化)
  • 在运维工作中,传统虚拟化与docker有什么区别?
  • 在运维工作中,Docker怎么清理容器磁盘空间?
  • 在运维工作中,Dockerfile中常见指令有哪些?
  • 英语_阅读_Rivers are important in culture_单词_待读
  • 题解:P12151 【MX-X11-T5】「蓬莱人形 Round 1」俄罗斯方块
  • 题解:P1291 [SHOI2002] 百事世界杯之旅
  • 题解:P4170 [CQOI2007] 涂色
  • 课堂分组赛、组队赛小结
  • 【AI News | 20250725】每日AI进展
  • 题解:P13308 故障
  • 今天做什么
  • mmap提高LCD显示效率
  • 用 Python 构建可扩展的验证码识别系统
  • Java学习Day28
  • 语录
  • 深度学习(onnx量化)
  • Redisson
  • P13493 【MX-X14-T3】心电感应 题解
  • uni-app项目跑APP报useStore报错
  • DE_aemmprty 草稿纸合集