随笔分类 - kmp
摘要:/* 巧妙地使用fail数组 根据fail数组的定义 fail[i] 有 长度为i的子串最长公共前后缀为fail[i] 比如样例 fail 0 0 1 2 那么我们维护一个ans[i]表示到i位置的时候 前i位置子串的匹配次数 比如 a b a ans[1]=1 ans[2]=1 到ans[3]的时候 发现 a 又出现了一边 说明之前的a子串统计少了 相应的可以根据 fail找到a的位置...
        阅读全文
                
摘要:#include #include #include #define maxn 1010 using namespace std; int ans,an[maxn],l1,l2,fail[maxn]; char s1[maxn],s2[maxn]; void kmp_init() { for(int i=2;i<=l2;i++) { int p=fail[...
        阅读全文
                
摘要:/* 无奈我改了那么久还是看的题解 首先跑一边kmp 几下ans[p]表示总共匹配到长度p的次数 这些不一定都是恰好到p 所以在处理一下 ans[p]通过处理变成 所有的匹配到长度p的次数 最后答案就是总共匹配到长度p+1的次数 - 总共匹配到长度p的次数 就是恰好匹配到长度p的次数 */ #include #include #include #define maxn 200010 usin...
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号