AC自动机
_beginend
这个作者很懒,什么都没留下…
展开
-
Codeforces 1110H Modest Substrings AC自动机
题意给出LLL和RRR,称所有在[L,R][L,R][L,R]范围内的数都是好的。求一个长度为n且由数字组成的字符串,满足有最多的子串是好的,且字典序尽量小。L,R≤10800,n≤2000L,R\le10^{800},n\le2000L,R≤10800,n≤2000分析先考虑最暴力的做法,我们可以把所有好的数字放到一起建AC自动机,然后在上面dp。显然状态数是无法接受的,但注意到假设数...原创 2019-06-19 18:33:32 · 219 阅读 · 0 评论 -
Codeforces 710F String Set Queries AC自动机+二进制分组
题意有一个字符串集合D,要求资辞m个操作: 1 str表示在D中加入字符串str 2 str表示在D中删除字符串str 3 str表示询问D中每个字符串在str中的出现次数的和 强制在线 m,∑|str|≤3∗105m,∑|str|≤3∗105m,\sum|str|\le3*10^5分析一开始想到一个在线建广义sam+lct的做法,后来羊告诉我说在线建广义sam的复杂度是不对...原创 2018-07-05 18:29:46 · 495 阅读 · 0 评论 -
Codeforces 587F Duff is Mad AC自动机+分块
题意给出n个字符串S[1..n]S[1..n]S[1..n],有q个询问,每次询问(l,r,k)表示求编号在[l,r][l,r][l,r]之间的字符串在S[k]S[k]S[k]中的出现次数的和。 n,q<=105,∑S[i]<=105n,q<=105,∑S[i]<=105n,qS[1..x]S[1..x]S[1..x]在fail树上对应的节点处+1,然后枚举S[k]S...原创 2018-03-12 21:45:36 · 387 阅读 · 0 评论 -
bzoj 3881: [Coci2015]Divljak AC自动机+树链的并+树状数组
题意Alice有n个字符串S_1,S_2…S_n,Bob有一个字符串集合T,一开始集合是空的。 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P。 “2 x”,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅当B是A的子串) Bob遇到了困难,需要你的帮助。 1 <= n,q <= 100000; Alice原创 2017-11-08 21:00:22 · 402 阅读 · 0 评论 -
bzoj 2553: [BeiJing2011]禁忌 AC自动机+矩阵乘法+期望
题意给出n个串,定义一个长度为len的字符串的权值为:所有拆分方案中,最大的完全等于这n个串中一个的部分的数量。求所有长度为len的字符串的权值期望。 n<=5,len<=10^9,每个字符串长度<=15。分析显然可以上AC自动机。 一开始的思路是设f[i,j]表示走了i步走到节点j的期望权值,然后建出状态转移矩阵后发现无法转移。搜了题解才发现可以设f[i,j]表示走了i步走到节点j的概率,然后原创 2017-10-14 11:09:38 · 452 阅读 · 0 评论 -
bzoj 1559: [JSOI2009]密码 AC自动机+状压dp
题意给出n个字符串,求有多少个长度为L的字符串满足每个字符串出现至少一次。字符串仅由小写字母组成。 若方案书<=42的输出方案。 n<=10,L<=25,字符串长度<=10分析首先把重复和被包含的字符串去掉,建立AC自动机。 设f[i,j,k]表示在AC自动机上走了i步,走到第j个点,n个字符串的出现情况为k(k为n位二进制)的方案数。直接枚举转移即可。 输出方案数的话,注意到若字符串的某一原创 2017-07-11 16:14:49 · 846 阅读 · 2 评论 -
bzoj 2434: [Noi2011]阿狸的打字机 AC自动机+树状数组
题意给你一棵trie,每次询问一个串在另一个串中出现了多少次。 n,q<=100000分析好气啊骑士队居然输掉了!!!不过老詹还是很给力的啊。气得我都不想写题了。首先很显然这是一棵trie。 考虑朴素的做法,可以每次把两个串进行匹配,复杂度是O(qn^2)。考虑用AC自动机的fail指针来优化,可以做到O(nq),但仍然会超时。 显然一个串s1在另一个串s2中出现的次数就等于根到s2的结尾中有原创 2017-06-05 13:20:09 · 388 阅读 · 0 评论