随笔分类 -  后缀自动机

摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3879 [算法] 首先 , 后缀树有一个很好的性质 : 两个后缀的LCP等于该字符串反串后缀树上所对应的两个节点的最近公共祖先u的right集合中最长的串 , 即maxlen(u) 注意 阅读全文
posted @ 2019-05-26 22:41 evenbao 阅读(395) 评论(0) 推荐(0)
摘要:[题目链接] https://codeforces.com/contest/204/problem/E [算法] 首先构建广义后缀自动机 对于自动机上的每个节点 , 维护一棵平衡树存储所有它所匹配的字符串编号 可以通过启发式合并得到 计算答案时 , 我们枚举每个右端点 , 当当前集合大小 < K时 阅读全文
posted @ 2019-04-05 21:40 evenbao 阅读(293) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=5337 [算法] 考虑构建后缀自动机 用fi , j表示前i个串 , 匹配到自动机上的j号节点方案数 在自动机上dp即可 , 详见代码 时间复杂度 : O(NK) [代码] 阅读全文
posted @ 2019-04-05 21:25 evenbao 阅读(561) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2946 [算法] 建立多串后缀树 对于后缀树上的每个点 , 判断该节点所代表的等价类是否在所以字符串中出现 , 用该点的深度更新答案 时间复杂度 : O(NL) [代码] 阅读全文
posted @ 2019-04-05 21:12 evenbao 阅读(179) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2806 [算法] 首先建立广义后缀自动机 注意到问题具有单调性 , 不妨对于每组询问二分答案mid 如何检验? 记fi表示前i个字符最多能选几个 , 有转移方程 : fi = max{ 阅读全文
posted @ 2019-03-29 21:18 evenbao 阅读(206) 评论(0) 推荐(0)
摘要:[题目链接] https://codeforces.com/problemset/problem/666/E [算法] 首先建立广义后缀自动机 对于自动机上的每一个节点建一棵动态开点线段树 对于每次询问 , S[pl..pr]所表示节点可以在多串后缀树上倍增得到 那么我们需要的就是计算该节点中出现次 阅读全文
posted @ 2019-03-29 21:04 evenbao 阅读(256) 评论(0) 推荐(0)
摘要:[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3926 [算法] 建立广义后缀自动机 对于每个叶子节点 , 以它为根 , 依次将路径上的子串加入自动机 最后统计本质不同的子串个数即可 时间复杂度 : O(N) [代码] 阅读全文
posted @ 2019-02-24 18:46 evenbao 阅读(155) 评论(0) 推荐(0)