hdu3068:http://acm.hdu.edu.cn/showproblem.php?pid=3068题意:给你一个字符串,求最长的回文串的长度。题解:第一次,接触Manacher算法,这是一个模板题。 1 #include 2 #include 3 #include 4 #include 5...
分类:
其他好文 时间:
2014-08-09 13:17:47
阅读次数:
260
Manacher是一个可以在O(n)的时间内求出一个长度为n的字符串的算法。以为回文子串有偶数长度,也有奇数长度,分别处理会很不方便。所以在每两个字符中间插入一个无关字符,如‘#’,这样所有的回文子串都变为奇数长度。两端在添加不同的无关字符防止匹配时越界。如: abba 变成 $#a#b#b#a#&...
分类:
其他好文 时间:
2014-08-08 21:12:56
阅读次数:
299
题目链接最长回文Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7976Accepted Submission(s): 2735Problem De...
分类:
其他好文 时间:
2014-08-08 15:16:36
阅读次数:
277
Manacher算法o(n)求解最长回文子串问题 非常巧妙
#include
using namespace std;
char str[2000020],s[2000020];
int p[2000020];
int len,id,mx;
void pre() //对字符串进行预处理
{
len=strlen(s);
str[0]='$';
str[1]='#';...
分类:
其他好文 时间:
2014-08-07 09:50:39
阅读次数:
237
Manacher算法是个解决Palindrome问题的O(n)算法,可以说是个超级算法了,秒杀其他一切Palindrome解决方案,包括复杂的后缀数组。
网上很多解释,这里总结一下思想重点:
1 原字符串的字符间插入新的字符, 如#,方便统一所有的字符中心,比如aa和aba的字符中心不一样的,aa的字符中心可以说是aa,而aba的中心则是b,而插入#之后,aa成#a#a#,其中...
分类:
其他好文 时间:
2014-07-31 03:04:15
阅读次数:
224
题目来源:吉哥系列故事——完美队形II
题意:中文
思路:在manacher算法向两边扩展的时候加判断 保证非严格递减就行了
#include
#include
#include
using namespace std;
const int maxn = 100110;
int a[maxn<<1];
int b[maxn<<1];
int dp[maxn<<1];
int manac...
分类:
其他好文 时间:
2014-07-23 17:18:54
阅读次数:
381
Manacher算法首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做....
分类:
其他好文 时间:
2014-07-22 00:00:36
阅读次数:
340
参见hdu 3068 的manacher算法
代码如下:#include
#include
#define M 110010
int s[M],ss[M*2];//s代表原来的字符串,ss代表插入之后的字符串
int p[M*2]; //表示以i为中心的(包含i这个字符)回文串半径长
int min(int a,int b)
{
return a>b?b:a;
}
int mai...
分类:
其他好文 时间:
2014-07-18 11:06:33
阅读次数:
249
现给定一个已知的字符串str[],现在想要在O(n)的时间复杂度之内求出一个最长的回文子字符串(正着和倒着顺序读一致)。Manacher最早发现了可以用O(n)的时间复杂度来解决该问题,所以这种方法称之为Manacher算法。#include using namespace std;int min(...
分类:
其他好文 时间:
2014-07-01 13:11:29
阅读次数:
245
昨天做了leetcode里的 Longest Palindromic Substring ,一开始用动态规划O(N^2),不管怎么改都超时了。。。于是在大神的帮助下,找到了传说中的Manacher算法,居然能在O(n)内求出来,瞬间给跪了。
本屌认为,这个算法主要是充分的利用了以前的匹配的结果,来起到了降低时间复杂度的作用,这点跟KMP算是有点类似。在预处理时有个小技巧就是将第0,1为设...
分类:
其他好文 时间:
2014-06-20 12:15:22
阅读次数:
305