bzoj3620似乎在梦中见过的样子 题意: 给出一个字符串,要求求出形如A+B+A的子串数量,且lenA≥k,lenB≥1。字符串长度≤15000,k≤100,所以字符长度为小写字母。 题解: 第一次写kmp的题QAQ~这题利用的是fail函数的性质:若字符串s在位置x的fail函数f[x]不为0 ...
分类:
其他好文 时间:
2016-08-17 00:04:57
阅读次数:
173
Description 已知一个字符串S,求它有多少个形如A+B+A的子串(len(A)>=k,len(B)>=1 )。 Input 第一行一个字符串,第二行一个数 k。 Output 仅一行一个数,表示满足条件的子串数。 Sample Input aaaaa 1 Sample Output 6 H ...
分类:
其他好文 时间:
2016-07-08 17:59:43
阅读次数:
171
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3620 【题意】 给定一个字符串,统计有多少形如A+B+A的子串,要求A>=K,B>=1。 【思路】 枚举左端点i,对字符串s[i..n]统计答案。 放个指针,然后枚举右端点j,如果指针超 ...
分类:
其他好文 时间:
2016-03-29 19:30:29
阅读次数:
140
好久没有写过KMP了,今天写个KMP练练手。此题就是枚举左端点暴力,用KMP做到O(n^2) 1 #include<cstdio> 2 #include<cstring> 3 using namespace std ; 4 5 const int MAXL = 15000 + 20 ; 6 7 ch
分类:
其他好文 时间:
2016-02-07 17:32:00
阅读次数:
243
题目链接:BZOJ - 3620题目分析这道题使用 KMP 做 O(n^2) 的暴力就能过。首先,我们依次枚举字串左端点 l ,然后从这个左端点开始向后做一次 KMP。然后我们枚举右端点 r,符合条件的右端点 r 就是 S[l..r] 这一段的一个前缀和后缀相同,并且这一部分的长度 x 要满足 k ...
分类:
其他好文 时间:
2015-04-16 23:33:26
阅读次数:
170
题解:
对于一个区间[l,r][l,r] , 若存在一个长度≥k\ge k并且r?l2 的串K,它既相同于以ll为开端的等长串,又相同于以rr为结尾的等长串,那么这个区间就是一个可行串。
我们枚举区间左端点,然后可以利用KMP在线性的时间内处理完所有的右端点对答案的贡献。
代码:
#include
#include
#include
#include
#define N 160...
分类:
其他好文 时间:
2015-03-21 09:51:58
阅读次数:
431
题目大意:给定一个字符串,求这个字符串有多少个子串满足这个子串可以拆分成ABA的形式,其中|A|>=k,|B|>=1
梦の中で逢った、ような…...
n
枚举子串的左端点,然后枚举右端点
对于每个子串S我们要判定是否存在一个长度在[k,|S|-1>>1]之间的前缀与后缀匹配
那我们就求出长度不超过|S|-1>>1的最长前后缀,判断是否>=k即可
这怎么和去年NOI的某道【植物园】很...
分类:
其他好文 时间:
2015-03-20 22:08:36
阅读次数:
152