随笔分类 - 数据结构->后缀自动机
摘要:我LOJ打不开了我会乱说? 当年愚蠢到用线段树建图的题…… 我们首先需要一棵后缀树,根据“正串后缀自动机的fail树是反串的后缀树”,我们反着建一个后缀自动机,并构建正串后缀树 我们可以把要插入的A串或者B串插入到他们在后缀树对应的点,或者在一条边的中间 把A点拆成两个点,中间的边权是A串的长度 找
        阅读全文
                
摘要:题解 把S串建一个后缀自动机 用一个可持久化权值线段树维护每个节点的right集合是哪些节点 求本质不同的子串我们就是要求T串中以每个点为结束点的串有多少在$S[l..r]$中出现过 首先我们需要对于T串每个点本身和自己的匹配长度,可以建一个后缀自动机来完成 然后把T串放在S串上跑匹配,匹配到下一个
        阅读全文
                
摘要:我居然到了国赛之前才学习怎么做广义后缀自动机 这个题目……意思是……有20个叶子,肯定一条路径都是任意一个叶子为根,一个从某个点往祖先走的路径 这样的话我们可以按照dfs序,从每个节点的父亲那里的后缀自动机节点再加一个节点 这样只要对于每个后缀自动机的节点统计一下节点长度减去父亲节点长度就好了 cp
        阅读全文
                
摘要:题解 写后缀树真是一写就好久,然后调好久QAQ 我们把两个串取反拼一起建后缀树,这样的话使得后缀树是正串的后缀树 然后我们把询问挂在每个节点上,每次线段树合并,对于大于50的每次暴力跳着在线段树找,对于小于50的建出一棵树来,也就是$a[i][j]$表示第$i$位往后$j$位,向下一个$a[t][j
        阅读全文
                
摘要:题解 老了,国赛之前敲一个后缀树上LCT和线段树都休闲的很 现在后缀树上线段树合并差点把我写死 主要思路就是后缀树+线段树合并+容斥,我相信熟练的OIer看到这已经会了但就是不想写 但是由于我过于老年化,我还是决定记录一下我的思路 我用后缀自动机建的后缀树,所以是反串的后缀树,我考虑的都是区间字符串
        阅读全文
                
摘要:题解 做后缀自动机题要一点脑洞,脑洞一开,就过了 我们显然要拿第二个串跑第一个串的后缀自动机 我们可以求出第二个串每个位置匹配到的节点,和匹配的长度L 那么我们统计一个后缀树上的根缀和,表示这样个节点的路径字符串的所有后缀在串中出现过多少次(路径字符串就是根到这个点的路径中等于这个节点len值的串)
        阅读全文
                
摘要:题解 我们冷静一下,先画一棵后缀树 然后发现我们要给c和d这一段区间在[a,b]这一段开头的串里找lcp 而lcp呢,就是c点的祖先的到根的一段,假如这个祖先的子树里有[a,b dis[u] + 1],那么这个u就是合法的,维护每个点子树里出现过的后缀串起点可以用线段树合并 (这里的深度指后缀树上该
        阅读全文
                
摘要:https://www.hackerrank.com/challenges/how many substrings/problem 题解 似乎是被毒瘤澜澜放弃做T3的一道题(因为ASDFZ有很多人做过,当然,他换了一道更毒瘤的……) 仓鼠在最后一天的时候提了一嘴然后我发现依旧菜菜的不会……(因为太菜
        阅读全文
                
摘要:题解 我们对于B串建出后缀自动机和序列自动机 对于问题1,枚举左端点然后跑后缀自动机,直到不能匹配作为这个左端点的答案 对于问题2,枚举左端点然后跑序列自动机,直到不能匹配 对于问题3,设f[i][j]表示第前i个字符匹配到后缀自动机上第j个点的最少步数,如果下一步走不了则更新答案 对于问题4,设f
        阅读全文
                
摘要:题解 就是字符集较大需要离散化和建边表的后缀自动机水题 每次会加入i个新的串,其中重复的就是i的父亲节点所在节点的长度,减掉即可 代码 cpp include include include include include include define enter putchar('\n') def
        阅读全文
                
摘要:题解 想出了一个神奇的技巧 我们先把串反过来(因为我们需要起始位置的值而不是终止位置的值),每个点维护一下 fail树上子树里的点,作为正数绝对值最大的两个数,作为负数绝对值最大的两个数 我们发现这个两两相乘的最大值肯定是一个后缀最大值,我们对每个节点求一个最大值存到这个节点的len处理出后缀最大值
        阅读全文
                
摘要:这个算法的大概流程,是这样的 1.新建一个空结点的后缀自动机 2.我们现在已经拥有了一个后缀自动机,我们把新的结点加进去,找前一个节点和它的父亲,如果没有指向新节点的字符的边,就建上这条边。 3.如果我们向前找找到了空,那么这个东西的父亲就是根节点,它没有与它正好相等的后缀。 4.如果找到了某个节点
        阅读全文
                
摘要:C K th Substring 题解 找出第K大的子串,重复的不计入 这个数据范围可能有什么暴力可以艹过去吧,但是K放大的话这就是后缀自动机板子题啊= = 代码 D Equals 题解 给出可交换的两个位置,和一个排列,求最后能达成pi = i的位置 直接用并查集维护连通性,判一下这个位置上的数和
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号