
后缀自动机
ylsoi
这个作者很懒,什么都没留下…
展开
-
4566: [Haoi2016]找相同字符——后缀自动机
题目大意: 给定两个串,求有多少种方式从两个串中各提取出一个子串并且两个子串相等。 思路: 涉及两个串的子串问题考虑对第一个串建立SAM。 然后用第个二串在SAM上匹配,每到一个点,贡献是(目前的长度-这个状态的父亲的长度)x这个状态RIGHT集合的大小,同时对这个状态的每个祖先也像这样计算贡献即可。 /*======================================= * Aut...原创 2019-02-14 18:11:27 · 258 阅读 · 0 评论 -
[bzoj3998][TJOI2015]弦论——后缀自动机
题目大意: 给定一个字符串,求它的第k小子串。 思路: 后缀自动机的模板题。 考虑将后缀自动机建出来之后,求出每一个状态在原串中出现了多少次,然后统计以每个节点往后拓展的字符串总共有多少种(按照拓扑序累加即可),最后直接在DAG上做类似二分的就好了。 /*======================================= * Author : ylsoi * Time : 2019...原创 2019-02-09 16:30:31 · 214 阅读 · 0 评论 -
「NOI2018」你的名字——后缀自动机
题目大意: 给定一个母串和若干个询问串,求每个询问串有多少个本质不同的子串没有在母串中出现过。 思路: ION2017的串我们称为S串,ION2018的串我们称为T串。 先考虑68pts怎么去做。 考虑T串有多少个子串未在S串中出现过,于是将S建立SAM,然后将T丢进S的SAM里跑子串匹配,这样我们可以得到T的每一个结束位置的最大匹配长度,所有长度大于这个长度的子串都是符合要求的子串。 上述方法对...原创 2019-02-20 21:00:09 · 381 阅读 · 0 评论 -
[BJWC2018]Border 的四种求法——SAM+线段树合并+DSU+链分治
Border 的四种求法 给定一个串,q次询问[l,r]的border长度。 思路 首先先对整个串建sam,然后我们对包含r的每一个状态去计算。 设当前状态的最大长度为len,如果一个结束位置i是合法的,当且仅当l≤i&lt;rl\leq i &lt; rl≤i<r,且i&lt;l+leni &lt; l+leni<l+len,然后我们需要找到一个最大的...原创 2019-03-13 16:21:15 · 1035 阅读 · 0 评论