![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
AC自动机
文章平均质量分 82
CMTM4
ACM退役
展开
-
【USACO3.1.5】联系 位运算/KMP/AC自动机
吐槽:这题的输出真恶心恶心恶心恶心恶心*10000…… TLE方法: 暴力KMP,把所有的100 101 111之类的方案,全部和原串匹配一次…… 然后排序输出。 Compiling... Compile: OK Executing... Test 1: TEST OK [0.008 secs, 9424 KB] Test 2: TEST OK [0.003 sec原创 2015-02-24 23:06:12 · 526 阅读 · 0 评论 -
uva 11468 ac自动机+概率DP+简单的数据生成器
ans[i][j]表示在i节点,走j步,正好停留在有单词的节点的概率。 对于有单词的节点p, ans[p][0]=1, ans[p][other]=0 然后直接暴力概率转移即可。 写的不优美。。网上看搜了别人的程序,思想大致相同…… 但是大家的程序优美一些 这次AV自动机,得按照LRJ说的那样改一下ch数组,直接实现失配指针的链接。这样后面DP好写一些。原创 2016-08-27 10:19:28 · 641 阅读 · 0 评论 -
HDU 2896 病毒侵袭 AC自动机
AC自动机模板题之一 可能我过几天就忘记了…… 注意1:这题字符不是小写字母,是所有可见字符。 回忆: * AC自动机,令g[i,j]表示从i到j这一路遍历的所有字符串。 f[i]的意义就是g[?,i]和g[0,f[i]]的字符串是相等的 * last[i] ,表示g[0,last[i]]的字符串,是确定存在的,并且以last[i]结尾的字符串原创 2016-08-27 12:35:23 · 414 阅读 · 0 评论 -
POJ 2778 AC自动机+DP+矩阵优化
获得矩阵乘法板子一个(主要是非递归实现乘法) const int mat_size = 102;//矩阵大小 struct mat { long long a[mat_size][mat_size]; int x, y;//长宽 mat() { memset(a,0,sizeof(a)); } }; const long long mod = 100000; mat o原创 2016-08-27 17:01:28 · 488 阅读 · 0 评论 -
uva 11019 题目数据不合法!
经过试验,题目数据中,有各种不合法情况,只能使用scanf %s进行读入。否则会出现各种问题。 即使用网上别人的标程,进行修改为gets一样会挂。 还有网上一些同学的程序对拍后出现错误。。也AC了,数据太弱。 我的程序十分缓慢。。。现在正在研究原因。。(2300ms) 直接AC自动机强行跑每一行的串即可 #include #include #in原创 2016-08-28 12:39:50 · 568 阅读 · 0 评论 -
HDU 2243 AC自动机->DP->附矩阵乘法板子
题目大意: 给一些字母串,问长度为L【以内】的全部字母串中,有多少个字母串,【包含】给定的字母串。答案mod 2^64 首先,对于答案mod 2^64,只要全部使用unsigned long long进行运算,就会自动实现这个功能了。 然后假设,问题只求长度为L,而不是长度小于L的,这个问题怎么做呢? 参考前一个题解…… 题目转换为求【不包含】给定字母串来原创 2016-08-28 20:04:28 · 1828 阅读 · 2 评论 -
HDU 2222 AC自动机
板子:和LRJ的板子几乎一样。。略加修改了一点点一点我喜欢的变量方式而已 /* * AC自动机,令g[i,j]表示从i到j这一路遍历的所有字符串。 f[i]的意义就是g[?,i]和g[0,f[i]]的字符串是相等的 * last[i] ,表示g[0,last[i]]的字符串,是确定存在的,并且以last[i]结尾的字符串*/ struct AhoCorasickAutomata { in原创 2016-08-26 20:45:42 · 503 阅读 · 0 评论