摘要: 给定两个串,分别截取字串X和Y,连接组成X+Y,求不同的X+Y的方案数。 对于X+Y,如果重复的部分其实就是从同一个X+Y的某个地方断开弄成不同的X和Y,那么只要使得X和X+Y匹配得最长就行了。 因此,对两个字符串分别建立后缀自动机A和B,在A中找字串X,当X的末尾不能接某个字符c时,在B中找以c为 阅读全文
posted @ 2016-05-04 11:27 __560 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 就用spoj1812的代码做模版吧。。。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using namespace std; typede 阅读全文
posted @ 2016-05-04 00:27 __560 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 如果不算pre指针的话后缀自动机就是一个DAG,这是它能很方便地进行dp的前提。 而pre指针返回什么呢,返回的就是上一个的前缀包含改结点所代表子串的那个后缀,和AC自动机上的fail指针很像,都是为了匹配。我目前学得不深,看不出和AC自动机的fail指针有什么区别,用起来也几乎一样。 相比于字典树 阅读全文
posted @ 2016-05-04 00:26 __560 阅读(793) 评论(0) 推荐(0) 编辑