随笔分类 -  字符串----AC自动机

摘要:Pro: https://www.luogu.com.cn/problem/CF1437G 给定一个大小为n的字符串集合,每个字符串有一个初始为0的权值 支持以下q次操作 1.把第x个字符串的权值改为k 2.给定一个字符串s,求出字符串集合中所有在s中出现过的字符串的权值的最大值 Sol: 阅读全文
posted @ 2020-10-28 19:00 Creed-qwq 阅读(242) 评论(2) 推荐(0) 编辑
摘要:AC自动机的基本流程 先用所有模式串建立一颗Trie树 然后去计算Trie树每一个节点的fail指针(失配后应该转移到哪个节点) 同时额外补一些边,把Trie树改为Trie图 建立AC自动机的代码 解释一下这个补边是什么操作 比如这棵Trie树 先考虑没有额外补边的情况 如果在9号节点尝试沿着k边走 阅读全文
posted @ 2020-09-28 02:31 Creed-qwq 阅读(179) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.com.cn/problem/P5319 把题目要求最大化的那个式子,取一手对数,然后就变成了一个分数规划问题。 二分后AC自动机上DP即可。 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define N 阅读全文
posted @ 2019-04-25 01:17 Creed-qwq 阅读(181) 评论(0) 推荐(0) 编辑
摘要:pro: sol: 建出ac自动机。 一个合法的答案对应一条路径满足从一个scc走到另一个scc的路径。 发现这个题的方案数有可能是无限的。 会在以下两种情况无限: 因此,去掉无限情况后,环只有简单环,缩点以后随便dp一下即可。 阅读全文
posted @ 2019-01-27 17:38 Creed-qwq 阅读(364) 评论(0) 推荐(0) 编辑
摘要:AC自动机技巧 可以用树上的一些算法来进行优化 对于要求支持插入和删除字符串的题目,可以通过建两个AC自动机,查询的时候作差来实现。 当给出的查询串是一个含有空格的文本时,可以用特殊字符(比如'z'+1)来替换掉空格。 阅读全文
posted @ 2018-12-06 14:42 Creed-qwq 阅读(186) 评论(0) 推荐(0) 编辑
摘要:首先,可以发现这样一个性质 x在y中出现过=======y的某个前缀的后缀等于x。 先把AC自动机建出来后。 y的每一个前缀就是它在trie树上所遍历到的每一个点。 check这个点的后缀是否等于x也就是看沿着fail指针向上能否走到x。 这也就等价于这个点在x的子树中。 考虑去如何加速这个过程。 阅读全文
posted @ 2018-12-06 00:05 Creed-qwq 阅读(206) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示