转载自:http://blog.csdn.net/xingyeyongheng/article/details/9310555manacher算法:定义数组p[i]表示以i为中心的(包含i这个字符)回文串半径长将字符串s从前扫到后for(inti=0;imaxlen,则初始化p[i+k]=1;//本...
分类:
编程语言 时间:
2015-04-29 11:32:01
阅读次数:
142
题目链接:http://poj.org/problem?id=3974题意:求一给定字符串最长回文子串的长度思路:直接套模板manacher算法code: 1 #include 2 #include 3 #include 4 using namespace std; 5 const int M...
分类:
其他好文 时间:
2015-04-28 15:36:44
阅读次数:
139
O(n)回文子串(Manacher)算法资料来源网络 参见:http://www.felix021.com/blog/read.php?2040问题描述:输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。解析...
分类:
编程语言 时间:
2015-04-23 22:57:53
阅读次数:
167
这篇博文对Manacher讲的还不错
#1032 : 最长回文子串
时间限制:1000ms
单点时限:1000ms
内存限制:64MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些...
分类:
编程语言 时间:
2015-04-23 10:58:37
阅读次数:
164
题目描述- 基础方法:枚举子串,判断是否为回文串。- 改进:枚举中间位置,向两侧拓展。- 再改进:利用以前的信息,使得不用每个新位置都从长度1开始拓展。- 优化:将字符串预处理为奇数长度以避免考虑条件分支。- 再优化:开头加入特殊字符避免考虑边界。Manacher 算法:id 是中心点,mx 是其边...
分类:
编程语言 时间:
2015-04-20 00:06:11
阅读次数:
174
经典题,没什么好说的,直接上manacher,时间复杂度O(n),空间复杂度O(n),因为需要额外申请一个数组存储每个位置的子回文长度。算法精髓:1.把无论奇,偶长度字符串转换为奇数个。2.利用已经得到的最长回文的右边界来减少重复计算的次数,如果右边界mx>i,则p[i] = min(mx-i, p...
分类:
其他好文 时间:
2015-04-11 10:12:55
阅读次数:
117
4975 - Casting Spells
Time limit: 3.000 seconds
Casting spells is the least understood technique of dealing with real life. Actually, people find it quite hard to distinguish between a real spe...
分类:
其他好文 时间:
2015-04-11 00:07:35
阅读次数:
187
Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不满足>_>(中间那个字符无论如何不反对称) 那么我们就找'#'为中心的即可…… 将判断条件...
分类:
其他好文 时间:
2015-04-07 19:18:05
阅读次数:
165
Manacher算法/DP 找出所有的回文串,看做是一个个线段,那么问题就转化成了用最少的线段将整个区间覆盖起来,可以重叠,那么这就是一个DP了= = Orz ZKY大爷,让蒟蒻开眼界了……头一次知道原来树状数组还可以反过来用0.0 1 /****************************.....
分类:
其他好文 时间:
2015-04-07 17:24:19
阅读次数:
145
Manacher算法 找出一个最长子串S=X+Y,且X和Y都是回文串,求最长的长度是多少…… 同时找两个串明显很难搞啊……但是我们可以先找到所有的回文串!在找回文串的同时我们可以预处理出来l[i]和r[i]分别表示从 i 这个位置开始向左/右最长的回文串有多长,那么我们枚举两个回文串的分割点更新.....
分类:
其他好文 时间:
2015-04-07 13:21:59
阅读次数:
106