扩展KMP,用于求s的后缀的最长前缀。用extand数组表示第i个后缀的最长前缀的字符个数。注意几点:1.next数组是对T的 2.extand数组是对S的 3.应用:回文,重复串等代码如下: 1 #include 2 #include 3 #include 4 using...
分类:
编程语言 时间:
2015-07-17 00:01:04
阅读次数:
386
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300题意:说实话,看半天题目,愣是没看懂,百度题意才看懂,大概意思就是:第一个串串为匹配串,第i个代表字母顺序中的第i个,比如第一个是q,那么,q就代表a。第二个串是密文+明文,密文全部都有,但明文可能...
分类:
其他好文 时间:
2015-07-16 23:55:04
阅读次数:
140
首先,在谈到Manacher算法之前,我们先来看一个小问题:给定一个字符串S,求该字符串的最长回文子串的长度.对于该问题的求解,网上解法颇多,时间复杂度也不尽相同,这里列述几种常见的解法.
解法一
通过枚举S的子串,然后判断该字串是否为回文,由于S的子串个数大约为,加上每次判断需要的时间,所以总的时间复杂度为,空间复杂度为.
bool check(string &S, int l...
分类:
编程语言 时间:
2015-07-03 23:30:03
阅读次数:
179
题目大意:给定两个字符串,在第一个字符串中找到一个最大前缀作为第二个字符串的后缀 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 1...
分类:
其他好文 时间:
2015-06-25 06:41:57
阅读次数:
135
题目大意:找到字符串中所有和前缀字符串相同的子串的个数对于这种前缀的问题,通常通过扩展kmp来解决其实吧这是我第一次做扩展kmp的题目,原来确实看过这个概念,今天突然做到,所以这个扩展kmp的模板是做到这道题直接copy的这里用扩展kmp很好解决问题,_next[i],表示第i位开始所能匹配到的最大...
分类:
其他好文 时间:
2015-06-25 00:08:32
阅读次数:
160
KMP & 扩展KMP & Manacher 专题先来模版:void getNext(int *b,int m){ Next[0]=-1; int i=0,j=-1; while(i#include#include#include#include#include#include#i...
分类:
其他好文 时间:
2015-06-21 18:22:24
阅读次数:
129
扩展kmp: 用于求串的各个后缀与原串的最长公共前缀的长度;上图的是字符串自匹配的过程:图一: 假设现在匹配到i-1了,开始求next [ i ] 的值,此时,k记录的是到目前为止匹配到的最远的位置的那一次的起点,p标志的是已经匹配过的最远的点;图二: 因为前面是匹配过的,所以可以知道,...
分类:
其他好文 时间:
2015-05-24 14:08:06
阅读次数:
157
Best RewardProblem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3613Mean:给你一个字符串,每个字符都有一个权值(可能为负),让你将这个字符串分成两个字串,使得这两个子串的价值之和最大。一个子串价值的计算方法:如果这个子...
分类:
其他好文 时间:
2015-05-07 00:44:48
阅读次数:
164
题目大意:给个字符串S,要把S分成两段T1,T2,每个字母都有一个对应的价值,如果T1,T2是回文串(从左往右或者从右往左读,都一样),那么他们就会有一个价值,这个价值是这个串的所有字母价值之和,如果不是回文串,那么这串价值就为0。问最多能获得多少价值?对于我们只需要枚举扫描一遍extend数组,扫...
分类:
其他好文 时间:
2015-04-29 19:23:28
阅读次数:
102