Aho_Corasick 自动机
playwfun
宁静致远
展开
-
Dominating Patterns(Aho_corasick入门)
算是ac自动机的入门题了吧。就是给了最多170个长为最多70的模板串,然后给出一个文本串,让按输入顺序输出所有的文本串匹配点最多的那些串。 因为模板串多个且长度较小,而文本串较长1e6,所#include #include #include #include #include #include #include using namespace std; typedef long l原创 2015-04-23 21:10:58 · 505 阅读 · 0 评论 -
UVA - 11468(简单概率dp+ac自动机)
这题目给了一些单个字母或者数字,以及他们每个被选到的概率(总和为1),让求随机生成的串长为L的字串不包含给定的一些字串的概率。 想法很简单,就是按照概率选择的思想定义d(i,j)为当前已经生成串长为j的串,且在自动机中走到了i位置时,生成最终长为L的串不包含任何给定字串的概率。 那么状态转移就是逐个字符判断能不能选,能选的条件是在当前位置选一个字符c ,必须满足c点不是一个节点(字串端点)并且原创 2015-04-27 21:23:56 · 338 阅读 · 0 评论 -
UVALive 4126 (ac自动机做状态类)
题意: 给定最多10个长度不超过10的子串,让构造长度为n(n 分析: 暴力是26^25中可能性,那么怎样精简状态,可以定义d[ i ][ j ][ s ]为当前构造的串长为i且已经到达自动机j位置,已经生成的子串状态为s,接着往下构造所能生成的合法串有多少。 状态转移,就是直接暴力枚举一下下一个字母是谁,在自动机中做状态转移。 一开始用ac自动机做状态不是很好理解,j其实是代表着前面走原创 2015-10-09 15:40:53 · 598 阅读 · 0 评论