
KMP/扩展kmp
kmp
whoammiiiiii
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FZU 1901Period II(扩展kmp)
题意:给你一个字符串,问你有多少个p,满足s[i] == s[i+p](i+p <= len)。思路:一开始往kmp想了,不断递归循环节,但感觉不是很好搞,然后就想了一下exkmp,发现exkmp就是专门搞这种事的,因为算的是后缀和整个的公共部分,如果这个公共部分等于后缀的长度,那就满足题目要求的条件,把(串的长度 - 后缀的长度)加入答案,最后排个序就可以了。吐槽一下编译器的版本,...原创 2020-04-20 16:29:25 · 161 阅读 · 0 评论 -
hdu 6740 (kmp 枚举所有可能的循环节维护答案)
题目链接题意:给你一个小数,已知如果写全的话,后面为无限循环小数,现在给你个公式为a循环节在这串里出现的长度-b循环节的长度,让这个值最大。思路:首先只看小数点之后的数,而且最后一位数字肯定是循环节中的一个,所以我们把小数点后的那一串数倒过来kmp求一下next数组,枚举每一位i,因为最小循环节为i-next[i], 所以每一位的答案就是ai-b(i-next[i]), 维护一下答案就行。...原创 2020-04-04 17:03:16 · 207 阅读 · 0 评论 -
SPOJ CF25E(KMP)
题目链接这题搞的我真的是快崩溃了,题意说的有点不清楚,有可能是我太蠢,没注意到是子串就不用再加一串的情况,2个小时的kmp,纪念一下8。题意:给你三个字符串a,b,c, 现在让你构造一个字符串,条件是这个字符串中能找到a,b,c这三个子串(这个子串是要连续的),现在问你构造的最短长度是多少。思路:一开始想的是假如a后面是b,那么就要求一下a的后缀和b的前缀的公共部分,用same[i][j...原创 2020-04-04 01:34:08 · 199 阅读 · 0 评论 -
CF 126B(KMP 利用next数组枚举前后缀相同的子串)
题目链接题意:求一个最长的子串,这个子串在开头,结尾,中间都要出现过,没有就输出just a legend思路:利用kmp的next数组从最长的往短的枚举所有可能的子串,如果得到就break掉,不然会超时(如:aaaaaa…),设字符串下标为(0~n-1)那么就j从2到n-1(不是开头也不是结尾)看有没有next[j]和i相同就可以了。/*** Think twice, code on...原创 2020-04-03 22:13:21 · 250 阅读 · 0 评论