随笔分类 -  AC自动机

摘要:AC自动机+矩阵乘法。和多数人一样。也是看了Matrix67的博客。http://www.cnblogs.com/lj030/archive/2013/05/17/3083718.html 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #define LL long long 6 using namespace std; 7 const int maxn=11; 8 const int inf=0x3f3f3f3f; 9 co 阅读全文
posted @ 2013-05-29 20:03 LJ_COME!!!!! 阅读(172) 评论(0) 推荐(0)
摘要:AC自动机+DP,AC自动机还是把字符串按后缀分类,每个节点记录串的状态为本节点时会包含哪几个所给出的字符串。ans[i][j][k]表示长度为i状态为j包含的所给出的字符串为k(二进制,每一位1,0表示有没有第i个字符串)的字符串的个数。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #define LL long long 6 using namespace std; 7 const int mod=... 阅读全文
posted @ 2013-05-27 21:50 LJ_COME!!!!! 阅读(139) 评论(0) 推荐(0)
摘要:AC自动机的失配函数的利用和DP,Trie图中的每个节点代表一种状态,即一个字符串的后缀为从根节点到本节点的字符串。就是说把字符串根据他的后缀分为不同的类别,AC自动机上的每一个节点代表一个类别。在一个字符串的后面再加一个字符,此字符串就会从Tire图中的一个节点转移到另一个节点,这个过程可通过失配函数的求解过程中求出。其中有的节点所代表的类是不合法的,要记录下来。然后就是dp,ans[i][j]表示母串的i长度的串要变成状态为j的串所需最小修改次数。初始化为无穷大,如果j不合法不求,并且j的下一个转移得到的节点也不从j转移得到,最后比较每个节点的ans[len][j],得到最小值。 1 #. 阅读全文
posted @ 2013-05-27 13:53 LJ_COME!!!!! 阅读(164) 评论(0) 推荐(0)
摘要:AC自动机的应用,第一次做ac自动机,磕磕碰碰做了一整天,之前对于AC自动机的原理就想了好几个星期,一直没想透彻,失配函数还行,就是那个匹配过程不是很透彻,昨天又想了想,突然感觉理解了,但今天发现有些细节还是没搞透彻,唉╮(╯▽╰)╭。思路就是枚举每个方向的字符串通过利用AC自动机进行匹配,610ms水过 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 using namespace std; 6 const int maxn= 阅读全文
posted @ 2013-05-14 19:59 LJ_COME!!!!! 阅读(151) 评论(0) 推荐(0)