AC自动机
Neo__Z
这个作者很懒,什么都没留下…
展开
-
hdu2222 ac自动机模板
ac自动机模板题#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<cctype>#include<queue>u原创 2017-07-21 19:44:52 · 251 阅读 · 0 评论 -
bzoj 1030 文本生成器【AC自动机+dp】
解题思路:题目要求至少含有一个单词的方案数,可以转化成总方案数(26m26^m)减去不含有单词的方案数。 接下来把单词插到AC自动机上进行dp。 f[i][j]表示走到AC自动机的j号结点当前单词长度为i的方案数。 转移就是枚举下一位的26个字母,看是否可行(如果下一位在j的子节点中出现,若被标记为单词的结尾,就不能转移)。#include<iostream>#include<cstdio>原创 2017-11-10 09:46:04 · 301 阅读 · 0 评论 -
NOIP模拟 string【AC自动机】
题目大意:给定n个匹配串T,(|T|<=100),再给1个串S(|S|<=100000),问所有T共在S中出现了多少次。 再给m次操作pos,c,每次把S位置为pos的字母改为c(下标从一开始),每次操作后,问所有T共在S中出现了多少次。 n<=1000,m<=200000;解题思路:由于每个匹配串比较短,所以修改pos位置只会在[pos-|T|,pos+|T|]这个范围内的匹配改变,所以每次只原创 2017-10-16 16:49:32 · 248 阅读 · 0 评论 -
hdu6096 String【AC自动机】
题目大意:给出一些字符串,给出前缀后缀模式询问,问有多少字符串符合该模式解题思路:之前一直没头绪,看了看dalao的解法,真是奥妙重重。对于每个询问,我们将它变成 后缀+分隔符+前缀 的形式,如询问ab cd变为cd{ab。 对于每个原串,我们也变为 原串+分隔符+原串的形式,如abecd变为abecd{abecd。 这时我们若用询问串匹配原串就刚好只能匹配到题目所要求的一段了。 所以处理后直原创 2017-12-13 10:37:34 · 250 阅读 · 0 评论 -
hdu4117 GRE Words【AC自动机+动态规划+线段树】
题目大意:给定n个字符串,要求按顺序取一些字符串,满足后一个字符串是前一个字符串的子串,要求使得取出的权值和最大。解题思路:先建出AC自动机,设f[i]f[i]表示选第ii个串做结尾的最大价值,那么有: f[i]=max(f[j])+w[i](ji并且j是i的子串)f[i]=max(f[j])+w[i](j找max(f[j])max(f[j])最朴素的方法就是沿着单词ii的每原创 2018-01-23 19:26:15 · 325 阅读 · 0 评论 -
hdu2243考研路茫茫——单词情结 【AC自动机+动态规划+矩阵快速幂】
这道题就是bzoj1030的翻版,那道题题解见这里。还是用总方案数减去一个单词都不包含的方案数,只不过节点很少,不到30个,就可以用矩阵快速幂优化。不过注意要求的是长度小于L的,所以矩阵多开一维记录前缀和,总方案数也变成了260+261+262+……+26L" role="presentation" style="position: relative;">260+2原创 2018-01-25 22:51:57 · 292 阅读 · 0 评论