===字符串===
yhf_2015
无。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【hdu 1711】 Number Sequence KMP模板
#include using namespace std;int t, n, m;int a1[1000010], b1[10010], f[10010];bool flag;inline int gt(){ char _ch; bool _ok = 0; int _num = 0, _op = 1; while(1){ _ch = getchar(); if(_ch =原创 2016-09-27 07:29:07 · 254 阅读 · 0 评论 -
【hdu 2087】 剪花布条
每次匹配成功,将p清零。#include using namespace std;char a1[1010], b1[1010], f[1010];int main(){ while(scanf("%s", a1+1) && a1[1] != '#'){ scanf("%s", b1+1); int len1 = strlen(a1+1), len原创 2016-09-27 07:57:48 · 248 阅读 · 0 评论 -
【hdu 3746】 Cyclic Nacklace KMP求循环节
考虑循环节的产生,产生一个循环节,一定是后面的f数组单调递增,全部可以完全匹配。所以总长度减去递增的长度就是循环节的长度。#include using namespace std;char ch[100010];int f[100010];int main(){ int t; scanf("%d", &t); while(t --){ scanf("%s", ch+1原创 2016-09-27 11:27:30 · 250 阅读 · 0 评论 -
【hdu 2203】 亲和串 KMP匹配
处理环的方法:把链上的元素向后复制一遍。#include using namespace std;char a1[200010], b1[100010];int f[100010];int main(){ while(scanf("%s%s", a1+1, b1+1) != EOF){ int len1 = strlen(a1+1)*2, len2 = strlen(b1+1);原创 2016-09-27 12:45:48 · 253 阅读 · 0 评论 -
【bzoj 3670】 [Noi2014]动物园 KMP变式
num数组让记录前缀后缀相同且不重复的数的个数,因为有限制条件,前后不能重复,所以匹配的时候如果有重复的也算是匹配失败。然后是记录方案,考虑#include using namespace std;const int mod = 1e9+7;int n, m;char a1[1000010];int f[1000010], num[1000010];inline原创 2016-09-27 19:13:40 · 372 阅读 · 0 评论 -
【NKOJ 1505】 何老板的考古发现
链接原题地址思路把环展开,变成长度为两倍的链,暴力KMPKMP匹配每两个串。代码#include <iostream>#include <cstdio>#include <cstring>using namespace std;char ch[110][20010];int f[110][10010], g[20010], ok[110];int n, m, cnt;void get_原创 2016-10-26 14:12:25 · 270 阅读 · 0 评论 -
【BZOJ 1355】[Baltic2009]Radio Transmission
题目来源:BZOJ 1355思路:求循环节用到KMP的fail数组的性质。 试想一个长度为n的字符串,fail数组是后缀与前缀相同的最长的长度,那么最短的循环节是不能匹配的,长度为n−fail[n]n-fail[n]。代码:#include const int maxn = 1000010;int f[maxn], n, p;char a[maxn];int main原创 2016-12-29 20:02:51 · 317 阅读 · 0 评论
分享