后缀自动机
lleozhang
这个作者很懒,什么都没留下…
展开
-
bzoj 2780
后缀自动机的应用 首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串 如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机) 而这里有很多模式串,所以普通后缀自动机是不够的。 那么我们提出广义后缀自动机 所谓广义后缀自动机,可以简单理解成将很多个串建在同一个后缀自动机上 所以它的构造就是:每插入完毕一个串,就将las指针指回根节点...原创 2019-04-18 10:20:28 · 249 阅读 · 0 评论 -
bzoj 3277
十分之恶心的后缀自动机 (其实是水题,但是我太弱了...) 首先,有一个预备知识:bzoj 2780https://blog.csdn.net/lleozhang/article/details/89365183 现在我们假定你会了这道题 然后我们来讨论这个问题: 套路是一样的:仍然建起广义后缀自动机,然后搞出parent树 首先我们要想一个问题:如何确定某一个子串在这些串中出现的次数...原创 2019-04-18 21:07:47 · 303 阅读 · 0 评论 -
后缀自动机学习笔记
学了一周后缀自动机,觉得...好难啊(主要还是自己太弱了...) 看见网上很多大佬的讲解,感觉总是有些似懂非懂,索性一起拿出来做一个总结,可能效果会好一些 首先,我们能看到这样一个定义: 后缀自动机是一个的确定性有限状态自动机,能接受这个字符串的所有后缀 然后就不知道了...... (不得不承认,对于我这种蒟蒻,看到这个定义的第一反应是看看别的...) 所以我们直接从后缀自动机的结构与...原创 2019-04-20 09:23:24 · 356 阅读 · 0 评论 -
后缀自动机实际应用
上一篇我们具体介绍了后缀自动机的构造方式,但并没有谈它的应用,那么我们在这一篇里详细谈一谈后缀自动机的应用 首先,后缀自动机的性质:从根节点开始可以识别一个字符串的所有子串 接下来,我们需要给出一个定义: 将后缀自动机上的pre指针反指,会得到一棵树形结构,我们把这棵树叫做parent树! parent树是原串反串的后缀树! 记住这个定义,因为后缀自动机中大部分题都与这棵树有千丝万缕的联...原创 2019-04-20 10:21:36 · 799 阅读 · 0 评论 -
bzoj 3998
我们分成两种情况来分析这个问题:t=0和t=1 t=1时,每一个子串出现的次数就是他在parent树上所在子树内前缀节点的个数,这一点我们已经说的很清楚了 利用SAM有向无环的性质,我们可以在parent树上统计完之后在后缀自动机上dfs,对每个点累计以他为开头的所有子串的总数 然后在查询的时候直接在SAM上跑,如果以当前点为开头的子串总数小于k,则将k减去这个总数后向他的兄弟节点查询,否则...原创 2019-04-20 10:33:41 · 435 阅读 · 0 评论 -
后缀自动机例题精讲
这一篇是后缀自动机的一些例题题解及总结: 例: bzoj 3998 题意:求一个字符串中第k小子串,t=0表示子串仅区别字典序,t=1表示子串区分起止位置 解析:建起后缀自动机,构造parent树,利用后缀自动机有向无环累计子串个数查询即可 具体解析:https://blog.csdn.net/lleozhang/article/details/89413818 bzoj 2780 ...原创 2019-04-20 10:39:28 · 589 阅读 · 0 评论