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

摘要:题意:每位十进制数都能转化为4位二进制数,比如9是1001,127是 000100100111,现在问你,在L到R(R <= $10^{200}$)范围内,有多少数字的二进制表达式不包含模式串。 思路:显然这是一道很明显的数位DP + AC自动机的题目。但是你要是直接把数字转化为二进制,然后在Tri 阅读全文
posted @ 2019-07-17 11:13 KirinSB 阅读(269) 评论(0) 推荐(0)
摘要:题意:目标串n( <= 10)个,病毒串m( < 1000)个,问包含所有目标串无病毒串的最小长度 思路:貌似是个简单的状压DP + AC自动机,但是发现dp[1 << n][5e4]根本开不出那么多空间,似乎GG。但是我们仔细想一下就能发现,既然要包含所有目标串的最小长度,那必然这个串就是只有目标 阅读全文
posted @ 2019-07-16 19:27 KirinSB 阅读(171) 评论(0) 推荐(0)
摘要:题意:给你些分数串,给你一个主串,主串每出现一个分数串加一分,要你重新排列主串,最多几分 思路:显然这里开$40^4$去状压内存不够。但是我们自己想想会发现根本不用开那么大,因为很多状态是废状压,不是不存在的,那么可以考虑想办法简化状态。 一个是hash,直接打表所有子情况,用ha[][][][]表 阅读全文
posted @ 2019-07-16 15:26 KirinSB 阅读(294) 评论(0) 推荐(0)
摘要:题意:n个病毒串,给你一个串t,问你最少改几个能没有病毒串 思路:去年还觉得挺难得...其实就是AC自动机上跑一下简单的DP,每个位置都往没病毒的地方跑,然后看一下最少是什么。 代码: 阅读全文
posted @ 2019-07-15 19:43 KirinSB 阅读(231) 评论(0) 推荐(0)
摘要:题意:m个密码串,问你长度为n的至少含有k个不同密码串的密码有几个 思路:状压一下,在build的时候处理fail的时候要用 | 把所有的后缀都加上。 代码: 阅读全文
posted @ 2019-07-15 11:30 KirinSB 阅读(190) 评论(0) 推荐(0)
摘要:题意:给出n个字符,p个病毒串,要你求出长度为m的不包含病毒串的主串的个数 思路:不给取模最恶劣情况$50^{50}$,所以用高精度板子。因为m比较小,可以直接用DP写。 因为给你的串的字符包含拓展ASCII码(128~256),由于编译器的原因,char的读入范围在-128~127或者0~255之 阅读全文
posted @ 2019-07-14 19:59 KirinSB 阅读(215) 评论(0) 推荐(0)
摘要:题意:找出所有长度不大于L的,包含至少一个模式串的主串的个数。 思路:和2778类似,但是这里求1~L所有长度的种数。所以我们只要求出来不包含的所有个数就行。 假设AC自动机上所有节点的邻接矩阵为A,那么答案为$\sum_{i=1}^n 26^i - \sum_{i=1}^n A^i$。 因为L有点 阅读全文
posted @ 2019-07-13 16:17 KirinSB 阅读(219) 评论(0) 推荐(0)
摘要:题意:给出m个模式串,要求你构造长度为n(n <= 2000000000)的主串,主串不包含模式串,问这样的主串有几个 思路:因为要不包含模式串,显然又是ac自动机。因为n很大,所以用dp不太好。 在图论中,如果我们知道一个图的邻接矩阵A,$A_{ij}$ = 1表示i走一步到j有一条路,那么$A^ 阅读全文
posted @ 2019-07-13 14:32 KirinSB 阅读(265) 评论(0) 推荐(0)
摘要:题意:从 1 走到 n,要求所走路径不能出现给定的路径,求最短路 思路:因为要求不能出现给定路径,那么我可以求助ac自动机完成判断。 我们可以在build的时候标记哪些路径不能出现,显然下面这种表示后缀不能出现,那么他也不能出现 然后再把图建完整。因为如果一个路径不在Trie中有两种情况,一种是他可 阅读全文
posted @ 2019-07-13 11:47 KirinSB 阅读(255) 评论(0) 推荐(0)
摘要:题意:问你主串有几种模式串。但是所有串都是加密的,先解码。解码过程为:先把串按照他给的映射表变成6位数二进制数,然后首尾衔接变成二进制长串,再8位8位取变成新的数,不够的补0。因为最多可能到255,所以不能用char存,要用int。 思路:模拟乱搞一下,加个板子完事。 代码: 阅读全文
posted @ 2019-07-12 16:38 KirinSB 阅读(275) 评论(0) 推荐(0)
摘要:题意:给出主串中每个模式串的个数 思路:毒瘤出题人多组数据没说给的是多组数据。 板子: 代码: 阅读全文
posted @ 2019-07-12 16:08 KirinSB 阅读(214) 评论(0) 推荐(0)
摘要:题意:给出模式串,问你主串出现了几种模式串。 思1路:ac自动机模板题。参考q学姐:av6295004 ac自动机的基本原理就是在trie上建Fail值,这样我每次失配就去找当前的最长后缀去匹配,一直到完全失配为止,这样我就找遍了所有的模式串。 代码: 阅读全文
posted @ 2019-07-12 11:08 KirinSB 阅读(151) 评论(0) 推荐(0)