![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kmp
文章平均质量分 79
johsnows
正在静下心来学算法的acmer
展开
-
POJ 1961 Period(KMP)
题意: 在一段字符串的所有前缀中,找出有循环节的那些前缀,并分别求这些前缀的最大循环节数量。 解题思路: 用一下公式 循环节数=(i+1)/(i+1-next[i])(当(i+1)%(i+1-next[i])==0时)即可 代码: #include #include using namespace std; const int maxn=1e6+5; char str原创 2017-02-13 14:43:05 · 575 阅读 · 0 评论 -
codeforces 347 D Lucky Common Subsequence(dp+kmp)
题意: 给出a,b,c三个字符串,问ab两个字符串最长不包含c的公共子序列。 解题思路: 基本的思想还是求最长共子序列的dp。 但是需要扩展一维,第三维k表示dp[i][j]最长公共子序列的后缀和c的前缀匹配到的位置的下一个位置,每次a[i]==b[j]的时候, 我们去找一下a[i],加上a[i]的子序列和c匹配到的位置,这里利用下kmp就可以,从k开始跑。 然后用一个结构体记录原创 2017-05-27 11:49:46 · 566 阅读 · 1 评论