随笔分类 -  AC自动机&fail树

摘要:题目链接 "bzoj2434: [Noi2011]阿狸的打字机" 题解 建出fail树,如果fail树中只有第y个字符串那就是求x串这个点的子树和 对于每组询问的y分类 我们可以重新进行一次建树一样的操作,每次dfs的到字符串y 只要在fail树上用dfs序+树状数组维护,每次把路径上的点插到bit 阅读全文
posted @ 2018-08-22 21:54 zzzzx 阅读(174) 评论(0) 推荐(0)
摘要:题目链接 "bzoj2938: [Poi2000]病毒" 题解 简单的来说,就是构造一个只含0和1的字符串,不能与Trie完成匹配。 dfs判一下trie图上是否存在与根节点相连没有串结尾的环 也就是有串结尾的点和fail指针指向串结尾的点,或指向不能走的点(也就是之前那一坨)的点也不能在环中 代码 阅读全文
posted @ 2018-07-12 21:27 zzzzx 阅读(156) 评论(0) 推荐(0)
摘要:题目链接 "bzoj1559: [JSOI2009]密码" 题解 构造长度为n包含所有模式串的的串,求方案数 构造AC自动机的trie图 对于模式串可以装压dp 设dp[i][j][s]表示位于字符串第i位,位于trie图上的第j个节点,状态为s方案数 转移边为trie图 考虑ans include 阅读全文
posted @ 2018-07-05 19:59 zzzzx 阅读(239) 评论(0) 推荐(1)
摘要:题目链接 "bzoj3172: [Tjoi2013]单词" 题解 在插入单词时对于每个点都标记一下 构建fail树 因为AC自动机节点维护前缀,fail树的关系是公共后缀,那么可以发现,答案就是该单词的fail子树总价值 代码 c++ include include include include 阅读全文
posted @ 2018-07-05 19:55 zzzzx 阅读(100) 评论(0) 推荐(0)
摘要:题目背景 这是一道简单的AC自动机模板题。 用于检测正确性以及算法常数。 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交。 管理员提示:本题数据内有重复的单词,且重复单词应该计算多次,请各位注意 题目描述 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。 输入输出格式 阅读全文
posted @ 2017-11-25 20:39 zzzzx 阅读(235) 评论(0) 推荐(0)
摘要:题目描述 有NN个由小写字母组成的模式串以及一个文本串TT。每个模式串可能会在文本串中出现多次。你需要找出哪些模式串在文本串TT中出现的次数最多。 输入输出格式 输入格式: 输入含多组数据。 每组数据的第一行为一个正整数NN,表示共有NN个模式串,1 \leq N \leq 1501≤N≤150。 阅读全文
posted @ 2017-07-30 15:27 zzzzx 阅读(530) 评论(0) 推荐(0)
摘要:题目描述 给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。 输入输出格式 输入格式: 第一行一个n,表示模式串个数; 下面n行每行一个模式串; 下面一行一个文本串。 输出格式: 一个数表示答案 输入输出样例 输入样例#1: 2 a aa aa 输出样例#1: 2模板,ac自动机last 阅读全文
posted @ 2017-07-30 15:08 zzzzx 阅读(211) 评论(0) 推荐(0)