UVA 12012 - Detection of Extraterrestrial
题目链接
题意:给定一个字符串,求其所有子串中,对应1-n循环次数的最长串长度
思路:KMP,n才1000,可以接受O(n^2)的算法,对于每个后缀串,做一次KMP,然后在遍历一遍KMP数组,这样就可以得到每个子串的所有循环次数了,然后不断更新答案即可
代码:
#include
#i...
分类:
其他好文 时间:
2014-08-22 12:58:28
阅读次数:
213
KMP是单模匹配算法,主串是S,模式串是P,查找P在S中出现的位置。主要是思想是主串的索引 i 递增,当主串与模式串发生不匹配时,把模式串右移,右移的位数为 j – fail[j] ,对于模式串计算fail函数,这个函数用来表示计算模式串某个位置发生失配时,模式串重新匹配的位置。fail应该指向最后...
分类:
其他好文 时间:
2014-08-22 12:41:16
阅读次数:
244
题目:求一个串的最大的循环次数。
分析:dp,KMP,字符串。这里利用KMP算法。
KMP的next函数是跳跃到最近的串的递归结构位置(串元素取值0 ~ len-1);
由KMP过程可知:
如果存在循环节,则S[0 ~ next[len]-1] 与 S[len-next[len] ~ len-1]相匹配;
...
分类:
其他好文 时间:
2014-08-21 22:48:45
阅读次数:
343
原题描述: 阿申准备报名参加GT考试,准考证号为N位数 X1X2....Xn(0#include using namespace std;int N,M,K;const int maxm = 30;struct Matrix{ int a[maxm][maxm],n; Matrix(int n,in...
分类:
其他好文 时间:
2014-08-21 21:06:24
阅读次数:
334
EX_KMP算法总结 By viv 2014-8-9 0:30 吐槽1:字符串神马的我最讨厌了,但不学不行啊。TAT 吐槽2:写这东西差点错过CF(codeforces). 今天学了ex_kmp,故总结一下。(记性不好,学了的东西,说不定过两天就忘了) 先说说ex_kmp算法求得什么: 给定字符串T...
分类:
其他好文 时间:
2014-08-21 21:01:04
阅读次数:
2040
题解:将原来的串扩展为两倍,然后用KMP匹配。#include #include char str[200005],pat[100005];int next[100005],N,M;void getnext(){ int i=1,j=0;next[1]=0; while(iM)retur...
分类:
其他好文 时间:
2014-08-21 20:54:54
阅读次数:
197
扩展:multiport、iprange、connlimit、limit、time、string{kmp|bm}state[NEW、ESTABLISHED、RELATED、INVALID],作为一个主机防火墙,我们本机出去,本机服务器对服务器而言,很少需要主动发起新请求去连接别的机子。因为要在OUTPUT,很多情况下要放行ESTABLISHED和RELATED,..
分类:
其他好文 时间:
2014-08-21 00:24:03
阅读次数:
358
UVA 475 - Wild Thing
题目链接
题意:给定一个带通配符的文件名作为格式,后面跟一个文件名,要求输出符合格式的文件名
思路:先把带通配符的文件名根据星号位置进行分解,然后对于每个文件名去判断,判断的方法用KMP,如果格式的每段都能在文件名中不断往后一一匹配上,那么就是可以的,注意考虑开头和结尾没有星号的情况,还有这题就是如果找不到一个合适的,就什么都不输出,包括...
分类:
其他好文 时间:
2014-08-20 19:44:02
阅读次数:
224
题意:就是让你求出最小的字符矩阵面积,这个矩阵是这个大矩阵里能够循环的,但是并不一定是全部循环相同的,部分相同也算循环,比如样例。
思路:这题挺好的,以前没有想到二维字符串数组也可以用next数组求出其循环节,现在这题正好补了这个空。
解法:把每一个字符串当做字符进行求next数组,然后求出最小的循环字符串长度,即:len-next[len]。因为以前求循环节是len/(len-next[le...
分类:
其他好文 时间:
2014-08-20 16:30:12
阅读次数:
212