SAM
wtyyy!
Github Blog: wty-yy.github.io
展开
-
「雅礼集训 2017 Day7」事情的相似度 SAM+LCT+SEG
https://loj.ac/problem/6041题意:给出一个01串,求出结束点在[l,r][l,r][l,r]的两个前缀的最长公共后缀长度i,ji, ji,j 表示原字符串上位置, pos[]pos[]pos[] 表示在SAM上对应的点求两个点的最长公共后缀长度,就是他们在后缀树上的LCA点的 mxlmxlmxl先把询问离线下来,按右端点排序,从左向右顺着扫一遍,每次把当前点 po...原创 2019-03-07 17:08:20 · 227 阅读 · 0 评论 -
SubString SAM+LCT
P5212 SubString题意给出字符串S和操作次数QADD:往S后继续加一个字符串QUERY:求给出的字符串在S中出现次数考虑SAM,插入是O(n)的,查询位置时O(n)的,问题是怎么动态维护出sz[],sz[]其实就是在后缀树上u节点子树中结束节点的个数和。考虑到要动态加边,删边,求子树和,可以用LCT维护。每个np(新加节点)将其到根节点的路径上都加上1就行了。查询直接spl...原创 2019-03-20 21:21:15 · 202 阅读 · 0 评论 -
后缀自动机SAM题目总结
Hihocoder我的入门SAM后缀自动机一·基本概念题意 从零开始学习SAM入门,讲的非常好思路 仔细阅读题目理解SAM各种性质我的入门代码后缀自动机二·重复旋律5(入门题)题意 求整个串中本质不同子串个数(本质不同:两个串的长度或内容有差异) ∣S∣≤105|S|\le 10^5∣S∣≤105思路 对原串构造SAM, ans=∑i∈[1,cnt]mxl[i]...原创 2019-04-03 22:22:30 · 651 阅读 · 0 评论 -
51nod 1600 Simple KMP [SAM+LCT或树链剖分] 思维好题
1600 Simple KMP题意非常难理解,读懂题,画图后发现要求的就是每次增加一个字符后当前所有后缀的匹配个数关于证明可以看程序下面由于可以直接跳prt树,但是是O(n2)O(n^2)O(n2)的,由于数据太水可以混过去如果要动态做就是要将每次Extend的时候都更新prt树上一整条链上的所有点,i节点加上mxl[i]-mxl[pre[i]]这个动态操作可以用LCT做,但感觉太麻烦写...原创 2019-03-27 21:27:57 · 192 阅读 · 0 评论