博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

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

摘要:给定n个串和L,求长度不超过L且至少含有n个串中的一个的字符串有多少个。 n5, L<231, 5。字符集为小写字母。 阅读全文
posted @ 2021-05-21 19:01 SovietPower 阅读(152) 评论(0) 推荐(0) 编辑
摘要:无摘要.. 阅读全文
posted @ 2019-02-16 17:13 SovietPower 阅读(188) 评论(0) 推荐(0) 编辑
摘要:咕咕咕咕咕(为什么博客园摘要至少要5个字啊?) 阅读全文
posted @ 2018-12-10 07:14 SovietPower 阅读(140) 评论(0) 推荐(0) 编辑
摘要:给n个模式串,问是否存在长度无限的主串,使得任何一个模式串都没有在主串中出现。 阅读全文
posted @ 2018-09-07 21:35 SovietPower 阅读(168) 评论(0) 推荐(0) 编辑
摘要:难得写出一道不(很)水的题。 阅读全文
posted @ 2018-05-02 09:03 SovietPower 阅读(202) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先数位DP 用f[i][0/1]表示匹配到第i位前面i 1位是否为上界。 这样还需要状态转移,对于每个状态 枚举每一个数,用AC自动机得到下一个状态(这样状态其实就是在树上的标号) ps1.数不能带前导0(因为会有00...这样的串),对每一位要先加上以每个非零数开头的方案数 ps2 阅读全文
posted @ 2018-03-11 16:49 SovietPower 阅读(267) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //删掉一个单词需要前移一段位置,用链表维护就好了 复杂度O(sum(len)) include include define S 26 const int N=1e5+7; int n; char s[N],p[N]; struct AC_Automaton { int cn 阅读全文
posted @ 2018-03-11 12:45 SovietPower 阅读(226) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 首先不需要存储每个字符串,可以将所有输入的字符依次存进Trie树,对于每个'P',记录该串结束的位置在哪,以及当前节点对应的是第几个串(当前串即根节点到当前节点);对于'B',只需向上跳一个节点。 然后构建Trie图。fail[]有一个重要意义是: 若fail[y]=x,那么y节点表示 阅读全文
posted @ 2018-03-11 09:31 SovietPower 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目链接: "简单版" , "增强版" 简单版: cpp include include const int N=1e6+5,S=26; char s[N]; struct AC_Automaton { int cnt,q[N],val[N],fail[N],las[N],son[N][S]; // 阅读全文
posted @ 2018-03-08 19:10 SovietPower 阅读(242) 评论(0) 推荐(1) 编辑

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