随笔分类 - 字符串-后缀自动机
摘要:[BZOJ4032][HEOI2015]最短不公共子串(后缀自动机+序列自动机+DP) 题面 给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短的子序列,它不
阅读全文
摘要:[BZOJ4545]DQS的Trie(广义SAM+离线+树状数组) 题面 一颗 Trie 树,q 次操作,操作有3种: 1.求这棵树上本质不同的子串数量 2.插入一个子树,保证总大小不超过 100000 3.询问一个字符串在 Trie 树上出现过多少次,保证所有询问串总长度不超过 100000 分析
阅读全文
摘要:[GDOI2017]微信(广义SAM+状态压缩) 题面 题面过长,略 分析 先把n个串合并建出Trie. 由于n很小,对于Trie的每个节点,我们用状压记录这个节点代表的子串来自哪些串。然后BFS这个Trie,建出广义SAM.对于SAM中新建的每个节点,同样维护这个子串来自哪些串,构建的时候把它赋值
阅读全文
摘要:[BZOJ3756]Pty的字符串(广义SAM) 题面 在神秘的东方有一棵奇葩的树,它有一个固定的根节点(编号为1)。树的每条边上都是一个字符,字符为a,b,c中的一个. 你可以从树上的任意一个点出发,然后沿着远离根的边往下行走,在任意一个节点停止,将你经过的边的字符依次写下来,就能得到一个字符串
阅读全文
摘要:[BZOJ 3145]Str(SAM+启发式合并) 题面 Arcueid得知了两者的DNA片段,想寻求一个DNA片段,使得其在两者的DNA中都出现过。我们知道公主的脑袋有点不太灵活,如果两个DNA片段只有一个位置不同,她也会将其认为是相同的。所以请您找出这样的最长的DNA片段吧。 分析 考虑两个串中
阅读全文
摘要:[Codeforces1037H]Security(SAM+线段树合并) 题面 分析 CF什么时候也开始出这种套路题了 和[NOI2018]你的名字几乎一模一样,看到区间串问题,用线段树维护right集合,每次沿着转移边走的时候要判断一下转移到的节点的right集合中是否有在内的值.
阅读全文
摘要:[BZOJ1921][CTSC2010]珠宝商(点分治+后缀自动机) 题面 给出一个个点的树,每个点上都有一个字符。再给出一个长度为的特征串。求树上所有简单路径经过节点的字符按顺序连接起来后的串在特征串中的出现次数之和。 分析 显然发现是点分治。考虑如何计算经过一个点的所
阅读全文
摘要:[NOI2018]你的名字(后缀自动机+线段树合并) 题面 给出一个字符串,有组询问,每次询问给出一个字符串和整数.问能从中选出多少个本质不同的子串,满足这个子串在的区间没有出现过。 $|S| \leq 5 \times 10^5,q \leq
阅读全文
摘要:[BZOJ 3277]字符串(后缀自动机) 题面 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? 分析 首先,我们把所有字符串建成一个广义SAM.(实际上,只需要插入完每个字符串之后吧last设回根节点) 然后对于每个字符串,在自动机上跑,对于跑到的每
阅读全文
摘要:[Luogu P3649] [APIO2014]回文串(后缀自动机)(或回文自动机) 题面 给出一个长度为的字符串,求它的所有回文子串的出现次数乘以长度的最大值 分析 SAM做法: 方法来自2015年国家集训队论文。吐槽:为什么网上的
阅读全文