随笔分类 - 字符串--kmp&&扩展kmp
摘要:题目链接:https://vjudge.net/problem/POJ-2185 题意:给定由大写字母组成的r×c矩阵,求最小子矩阵使得该子矩阵能组成这个大矩阵,但并不要求小矩阵刚好组成大矩阵,即边界部分可以空缺(见样例)。 思路: 把每一行视作一个字符,然后对r行求next数组,那么r-nex[r
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-2594 题意:给定两个字符串s1、s2,求s1的前缀和s2的后缀的最长公共部分。 思路: 将s1和s2连接后求nex数组即可,当公共部分超过s1、s2长度的最小值时,输出最小值。 AC代码: #include<cstdio> 
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-3746 题意:给定一个字符串,问最少在两端添加多少元素使得整个字符串是呈周期性的。 思路: 应用到kmp中nex数组的性质,数组的最小循环节是L=len-nex[len],证明见http://www.cnblogs.com/w
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/HDU-3336 题意:给定长为n(<=2e5)的字符串s,求s的每个前缀在s中出现的次数之和。 思路: 用dp[i]表示以s[i]为结尾的子串是s的某一种前缀的方案数,那么dp[i]=dp[nex[i]]+1,因为[nex[i]-(i
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problem/P5410 题意:有两个字符串a,b,要求输出b与a的每一个后缀的最长公共前缀。输出: 第一行有lenb个数,为b的next数组(特别地,next1为lenb) 第二行有lena个数,即答案。 思路:扩展kmp模板,涉及字典树,后
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2406 题意:求出给定字符串的周期,和poj1961类似。 思路:直接利用next数组的定义即可,当没有周期时,周期即为1。 AC代码: #include<cstdio> #include<cstring> #include<
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-1961 题意:给定一个长为n的字符串(n<=1e6),对于下标i(2<=i<=n),如果子串s(1...i)是周期子串,输出其最大周期。 思路: 考察对kmp算法中next数组的定义掌握,如果(i+1)%(i-j)==0 &&
        阅读全文
                
摘要:题目链接:https://www.cnblogs.com/kuangbin/archive/2012/08/14/2638803.html 题意:给定两个数组a、b,在数组a中查找b,求第一次出现的下标,若没有则输出-1。 思路:kmp算法的应用. AC代码: #include<cstdio> #i
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-3461 题意:给出主串和模式串,求出模式串在主串中出现的次数。 思路:kmp板子题。复杂度O(n+m)。 AC代码: #include<cstdio> #include<algorithm> #include<cstring>
        阅读全文
                
 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号