容易联想到利用manacher算法获得len数组,然后枚举第二段的长度判断能否和第三段对应上,能的话就更新答案。另外枚举长度的时候,小于等于当前答案的长度就没有必要枚举了,不然可能会超时。 1 #include 2 #include 3 #include 4 using namespace s...
分类:
其他好文 时间:
2015-08-11 20:44:16
阅读次数:
108
//给一个序列,让求其最大子序列
//这个序列由三段组成,第一段和第二段对称,第一段和第三段一样
//manacher算法求得p[i]
//枚举第二段的起点和长度,得到结果
#include
#include
#include
using namespace std ;
const int maxn = 2e5 + 10 ;
int str[ma...
分类:
编程语言 时间:
2015-08-11 18:43:18
阅读次数:
131
题目:
在一个长度为n的数组里面找回文串,要求回文串从中间向两边一次递减
思路:
manacher算法:时间复杂度O(n)
在manacher过程中添加限制语句保证题目要求即可
st[i-p[i]]st[i-p[i]+2]///表示回文串的左侧部分,前面要比后面的小
代码:
#include
#include
#define MAXN 100010
using...
分类:
其他好文 时间:
2015-08-07 20:15:58
阅读次数:
103
前几天bestcode做到一道字符串的题目,需要O(n)的回文,正好看到网上的manacher算法,于是来学习一发
进入正题:
manacher算法
用法:一般用于求一个字符串的最大回文,操作过程中会记录以每个点为中心的回文半径,可用来进行其他操作
时间复杂度:O(n)
空间复杂度:记录字符串2*n,半径数组2*n
内容:
记p[i]为以i为中心的回文半径(a...
分类:
编程语言 时间:
2015-08-04 17:16:17
阅读次数:
194
题意:给你一个字符串问能否拆分为三个回文字符串?能就输出yes,否则输出no。知识补充:最长回文子串算法(Manacher算法):求解最长回文子串的线性时间复杂度算法,主要是通过中心扩展的方法极大地避免了重复计算。实现如下:
为了避免对字符串奇偶数的讨论,先对字符串做预处理如下:
规则为在字符间和两边插入'#'字符,为了避免越界处理,最两边插入'^'和'$'字符。
原本字符串为:asd
预处理后为:...
分类:
其他好文 时间:
2015-08-04 13:37:34
阅读次数:
121
前几晚 BC 的第二题,官方给出的题解是: 然后我结合昨天刚看的 Manacher 算法试着写了下,发现 pre、suf 数组挺难构造的,调试了好久,然后就对中间进行枚举了,复杂度应该是 O(n2) 吧,我第一次交时超时了,以为真的要用什么暴力压位,可是我还不会啊,然后作了一些少许的优化提交本...
分类:
其他好文 时间:
2015-08-04 13:09:10
阅读次数:
116
今天打算补前晚 BC 的第二题,发现要用到能在 O(n) 时间求最大回文子串长度的Manacher 算法,第一次听,于是便去百度了下,看了大半天,总算能看懂了其思想,至于他给出的代码模板我没能完全看懂,只好自己试着实现,发现理解了思想后还是能实现出来的,用自己的风格去写更好理解,先附上讲解Man.....
分类:
编程语言 时间:
2015-08-03 20:49:43
阅读次数:
142
题目地址:HDU 5340
题意:问是否能将字符串str分解为三段非空的回文串。
思路:我们根据Manacher算法对字符串进行处理,处理过程中产生的P数组,我们可以得到两个数组first和last。
first存储的是第一个回文串的半径可能值。
last存储的是第三个回文串的半径可能值。
根据first和last我们可以枚举第一个回文串和第三个回文串,然后根据半径找出第二个回文串的初始位...
分类:
编程语言 时间:
2015-08-03 17:00:40
阅读次数:
389
题目地址:HDU 3068
关于算法的详解:Manacher算法#include
#include
#include
#include
#include
#include
#include
#include
#include ...
分类:
编程语言 时间:
2015-08-03 14:47:03
阅读次数:
153
题目地址:POJ 3974
题意:求最长的回文串。
思路:同样是用Mancher算法在O(n)的时间内解决(我其实是来练练板子的#include
#include
#include
#include
#include
#include
#include <algorithm...
分类:
编程语言 时间:
2015-08-03 14:39:08
阅读次数:
99