题目链接最长回文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
边吃边敲,效率就是高
代码如下:
#include
#include
#define MAX 1000050
char s[MAX],ss[MAX*2];
int p[MAX*2];
int min(int a,int b){return a>b?b:a;}
int main()
{
int i,id,mx,max,n,j;
j=1;
while(scanf("%s",s...
分类:
其他好文 时间:
2014-07-19 02:31:25
阅读次数:
166
#include
#include
#define MAX 200020
char s[MAX],ss[MAX*2],str[2];
int p[MAX*2];
int chance(char s)
{
return (s- str[0] + 26) % 26 + 'a';
}
int min(int a,int b){return a>b?b:a;}
int main()
{
...
分类:
其他好文 时间:
2014-07-19 02:31:05
阅读次数:
201
参见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
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7317 Accepted Submission(s): 2500
Problem Description
给出一个只由小写英文字符a,b,c...y,z组成...
分类:
其他好文 时间:
2014-07-08 15:24:02
阅读次数:
195
现给定一个已知的字符串str[],现在想要在O(n)的时间复杂度之内求出一个最长的回文子字符串(正着和倒着顺序读一致)。Manacher最早发现了可以用O(n)的时间复杂度来解决该问题,所以这种方法称之为Manacher算法。#include using namespace std;int min(...
分类:
其他好文 时间:
2014-07-01 13:11:29
阅读次数:
245