题目大意给出一个字符串,求出这个字符串的最长回文子串。思路前来学习著名的Manacher算法。
这是一个线性时间求出回文子串的算法。具体来说,对于我们弄出的一个回文串,它对于后面的串并不是,没有用的,因为它的左右两侧是相同的,那么自然可以用左边的信息去更新右边。
设p[i]p[i]为第ii个字符的回文半径,_max\_max为max{p[i]+i}max\{p[i] + i\},也就是最远可以更...
分类:
其他好文 时间:
2015-04-07 09:47:35
阅读次数:
119
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9660 Accepted Submission(s): 3353
Problem Description
给出一个只由小写英文字符a,b,c...y,z组成...
分类:
其他好文 时间:
2015-04-06 20:19:38
阅读次数:
178
有种简单的方法,数组从左到右扫一遍,每次以当前的点为中心,只要左右相等就往左右走,这算出来的回文字符串是奇数长度的还有偶数长度的回文字符串就是以当前扫到的点和它左边的点作为中心,然后往左右扫这是O(n^2)的复杂度,这道题过还是没有问题的这里我主要练习的是另外的利用后缀数组加RMQ算法来解决这个问题...
分类:
其他好文 时间:
2015-04-04 01:10:03
阅读次数:
212
先从标准输入读取一个整数N(N,代表我给你的字符串的个数,然后接下来的就是我要给你的那N个字符串(字符串长度而你要告诉我你的答案的话,只要将你计算出的最长回文子串的长度按照我给你的顺序依次输出到标准输出就可以了!你看这就是一个例子。”
提示一 提示二 提示三 提示四
样例输入
3
abababa
aaaabaa
acacdas
样例输出
7
5
3
#include...
分类:
其他好文 时间:
2015-04-03 17:31:50
阅读次数:
141
回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,这个算法做了个简单的处理把奇偶情况统一了。算法的基本思路是这样的,把原串每个字符中间用一个串中没出现过的字符分隔开来(统一奇偶),用一个数组p[ i ]记录以 str[ i ] 为中间字符的回文串向右能匹配的长度。先看个例子原串: w a a...
分类:
编程语言 时间:
2015-04-01 15:08:14
阅读次数:
136
题目连接:点击打开链接
解题思路:
manacher算法的模板题。
完整代码:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef unsigned long long LL;
const int MOD = ...
分类:
编程语言 时间:
2015-03-31 18:09:37
阅读次数:
176
题目连接:点击打开链接
解题思路:
manacher算法模板题。
完整代码:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef unsigned long long LL;
const int MOD = i...
分类:
编程语言 时间:
2015-03-31 18:05:25
阅读次数:
179
最长回文子串,学习了一下manacher算法
#include
#include
char s[1000005];
int next[1000005];
int n;
//i,j两个指针所指的位置可以保证已经是该指针之前的串里,最优的了
int min(int a,int b){
if(a<b) return a;
return b;
}
int max(int a,int b...
分类:
其他好文 时间:
2015-03-28 13:04:30
阅读次数:
135
学习了一下manacher回文
#include
#include
#include
using namespace std;
char s[110005];
char news[220005];
int p[220005];
int n;
void manacher(){
n=strlen(s);
int l=0;
news[l++]='$';
news[l++]='#';
f...
分类:
其他好文 时间:
2015-03-28 13:02:04
阅读次数:
126