随笔分类 -  字符串 - 后缀自动机(SAM)

[CF666E]Forensic Examination:后缀自动机+线段树合并
摘要:分析 用到了两个小套路: 1. 使用线段树合并维护广义后缀自动机的$right$集合。 2. 查询$S[L,R]$在$T$中的出现次数:给$T$建SAM,在上面跑$S$,跑到$R$的时候先判匹配长度是否$\geq R L+1$,如果是则跳parent使$maxlen(x) \geq R L+1$的前 阅读全文

posted @ 2019-02-27 22:27 ErkkiErkko 阅读(188) 评论(0) 推荐(0)

[BZOJ3796]Mushroom追妹纸:后缀自动机+KMP
摘要:分析 这道题有个$O(n)$的后缀自动机做法,感觉很好理解就在这说一下。 先对$s1$和$s2$求最长公共子串,对于$s2$的每一个下标$i$,求一个$f[i]$表示以$s2[i]$结尾的最长匹配长度。 KMP求出$s3$在$s2$上的所有结束位置,然后扫一遍$s2$统计答案,很简单。 代码 cpp 阅读全文

posted @ 2019-01-11 16:18 ErkkiErkko 阅读(152) 评论(0) 推荐(0)

重复旋律:后缀数组+后缀自动机
摘要:后缀数组(SA) hihoCoder 1407 : 后缀数组二·重复旋律2 题意 一段旋律中出现次数至少为两次的不重叠旋律最长是多少? 分析 还是二分答案后挖去$height[i]=mid){ minpos=std::min(minpos,sa[i]); maxpos=std::max(maxpos 阅读全文

posted @ 2018-12-14 00:36 ErkkiErkko 阅读(315) 评论(0) 推荐(0)