后缀自动机
Todobe
two funny foolish men
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
后缀自动机 模板 【Poi2000】 公共串 bzoj 2946
后缀自动机按照哲学中是什么怎么做为什么的思路,我们来理解一下后缀自动机。是什么后缀自动机就是能识别所有的后缀(当然就能顺便识别所有后缀的前缀,就是子串了)的自动机。 它能做什么呢? 它能做字符串问题啊…… 比如什么求公共前缀啊,求有多少个本质不同的公共子串,当然它很多时候都和LCT搭配使用,能做的事情就更多。 什么用后缀数组啊,KMP啊啥的能做的题它好像都能做,用后缀树能做的题它也能做!(比原创 2017-01-16 20:26:32 · 900 阅读 · 0 评论 -
后缀自动机 【Sdoi2008】 Sandy的卡片 bzoj4698
题目大意: 有一些由数字组成的串。 定义两个串的子串相同:两个串的子串长度相同并且一个子串的所有数都加上一个数与另一个串恰好完全相同。 求所有串的最长的相同子串。题目分析: 两个串相同定义为一个串加上一个数等于另一个串,那么这两个串的相同部分就是相邻两个元素的差值。所以我们考虑差分,当然第一个数就不用管了。 然后用差分之后的数组建一个广义后缀自动机。然后我们再拿每个串放进去跑,在每个节点记原创 2017-01-17 16:32:49 · 563 阅读 · 0 评论 -
后缀自动机 【Zjoi2015】诸神眷顾的幻想乡 bzoj3926
题目大意: 给定一棵n(1<=n<=100000)个点的树,每个点上有一种颜色,颜色数不超过10。 问这个树上有多上个本质不同的链。 只与一条边相连的点不超过20个。题目分析:(广义后缀自动机) 广义后缀自动机啥的听起来就很高端,但是其实就是把几个串的的root捏在一起做后缀自动机…… 因为只与一条边相连的点不超过20个,所以建20个广义后缀自动机,在插入点的到时候顺便维护一下答案。也就是原创 2017-01-17 14:45:07 · 364 阅读 · 0 评论 -
后缀自动机 【Sdoi2016】生成魔咒 bzoj4516
题目大意: 给你n个数,每个数代表一个不同的字符。 初始为空串,每次在里面插入一个字符,并且询问本质不同的子串的个数。题目分析:(后缀自动机) 后缀自动机想要表示所有的后缀以及后缀的前缀,就会有性质:min_len=fa->max _len+1。 并且max_len-min _len+1就代表当前节点所表示的本质不同的子串的个数。 (这些后缀自动机的性质还需要我们感性的理解啊……) 所以原创 2017-01-17 08:25:08 · 532 阅读 · 0 评论 -
后缀自动机 + LCT 【bzoj2555】SubString
题目大意: 支持两个操作: 1、插入一串字符 2、查询一串字符在串中出现多少次。 强制在线题目分析: 维护一个动态的字符串,后缀自动机可以做。 要查询一串字符在串中出现的次数,就相当于查询这个串末尾字符代表的状态的right集合的大小,但是我们在维护后缀自动机的时候没办法维护right集合呀! 但是我们可以发现,一个节点的right集合等于在parent树上所有儿子节点的和。 所以只原创 2017-04-12 21:35:23 · 588 阅读 · 0 评论 -
后缀自动机+LCT 【bzoj4545】 DQS的Trie
题目大意: 维护一个树,树的边上有一个字母,支持三个操作: 1、查询本质不同的子串的个数; 2、在树上的某一个节点长出一个新的子树; 3、查询某个串出现的次数。题目分析: 对这棵树维护一个广义的后缀自动机。 对于1操作,只要维护每个节点的max_ len减去parent树上父节点的max_len,详见bzoj4516生成魔咒的题解; 对于3操作,则维护LCT进行链加即可,详见bzoj2原创 2017-04-19 14:19:27 · 614 阅读 · 0 评论 -
bzoj2806 【Ctsc2012】 Cheat 后缀自动机+单调队列优化dp
题目大意: 给定一些标准串。 给定一个串,要求一个L使得在这个序列中可以取出若干个长度超过L的子串(这些子串必须是给定标准串的子串),且取出的串的总长度超过整个串的90%。 求最大的L。题目分析:先用后缀自动机求出以每个位置为结尾往前最多能匹配多少位,我们用数组a[i]来存储这个值。 这个只要对于所有的标准串建一个广义的后缀自动机,然后把这个串放进去跑一遍,如果能匹配的话,这一位就比上一位多原创 2017-05-27 17:54:38 · 531 阅读 · 0 评论
分享