随笔分类 - 后缀自动机
摘要:题目传送门 思路:按字典序,小的字符优先选取。对于一个字符,如果以这个字符开头的子串大于等于k个,那说明这个字符是应该选的,并且选完之后,可能还要继续选。如果以这个字符开头的子串小于k个,说明这个字符不能选,因为选完这个字符,后面无论怎么构造子串,都构造不出第k大的子串。 所以关键点就在于我们要统计
        阅读全文
                
摘要:题目传送门 题意:给出一个母串,再给出n个串,问对于每个串,母串中有几个子串是可以通过循环变化得到这个串。 思路:对母串建SAM,求出$right$集。 把匹配串复制一遍,和母串进行匹配,当匹配长度大于等于$siz$时,将当时的$p$跳到最远的$len$还大于$siz$的父串(不停的往父亲跳),答案
        阅读全文
                
摘要:题目传送门 题意: 给出若干个串,求所有子串的和,子串和的定义为十进制数,取模1e9+7. 思路: 对于一个串来说,一个状态p就代表着$right$相同的集合,假设我们已经知道了状态p的$sum$,以及状态p的$size$,假设p的下一位有一个c,p+c的状态为q,那么$sum[q]+=sum[p]
        阅读全文
                
摘要:题目传送门 题目大意:求长度为k的串的最大次数,把k从1到length的所有答案全部输出。 思路: 这道题放在$SAM$里就是求长度$k$对应的所有$right$集中最大的大小。 我们以$aabab$这个串距离,称作$S$串。 首先我们要求出每一个状态对应的right集大小,S中的aab和ab此时并
        阅读全文
                
摘要:题目传送门 题意:给出一个字符串,求子串的个数。 思路:后缀自动机的题真是每做一题就更理解一些。 SAM中的每一状态$p$都代表了一种子串,而p包含的字符串的个数是$len[p]-len[fa[p]]$,所以答案就是$sigma len[i]-len[fa[i]]$,还有答案要开long long。
        阅读全文
                
摘要:题目传送门 题目大意:还是求字符串的最长公共子串,只不过这次是n个串。 思路: 先把第一个串丢到SAM里面去,然后每一个串都和前面那个串做一次最长公共子串的匹配。我们现在把SAM里面的其中一个状态记做$p$,这个$p$其实就代表了$right$集合相同的所有子串,我们要记录每一个状态下的最大匹配长度
        阅读全文
                
摘要:题面传送门 题意:给出两个$n=250000$的字符串,求最长公共子串。 思路:把第一个字符串放到SAM里面去。 对于第二个串,能匹配则匹配,不能匹配就跳回能匹配的位置,如果一个都不能匹配,则cur要重新初始化为root。 对后缀自动机的理解还比较模糊,怕误人子弟,此题就不做详述。
        阅读全文
                
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号