Manacher算法
【题目】
给定一个字符串str,返回str中的最长回文子串的长度。
【举例】
str=“123”。其中的最长回文子串“1”或者“2”或者“3”,所以返回1。
str=“abc1234321ab”。其中的最长回文子串“1234321”,所以返回7。
【进阶题目】
给定一个字符串str,想通过添加字符的方式使得str整体都变成回文字符串,但要求只能在str的末尾添加...
分类:
编程语言 时间:
2015-08-15 16:39:59
阅读次数:
146
O(n)回文子串(Manacher)算法转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/10/04/2711527.html资料来源网络 参见:http://www.felix021.com/blog/read.php?2040问题描述:输入一个...
分类:
编程语言 时间:
2015-08-13 17:57:23
阅读次数:
132
http://acm.hdu.edu.cn/showproblem.php?pid=5371
Problem Description
Hotaru Ichijou recently is addicated to math problems. Now she is playing with N-sequence.
Let's define N-sequence, which is...
分类:
编程语言 时间:
2015-08-13 14:32:32
阅读次数:
128
d[i]表示前面i个字符划分成的最小回文串个数,那么转移i字符和之前的某个字符j构成回文串形成的新划分,所以要判断前面的字符j+1到i是不是回文串,可以用Manacher算法预处理出来。#include #include #include #includeusing namespace std;co...
分类:
其他好文 时间:
2015-08-13 14:07:59
阅读次数:
141
算法原理:manacher算法:定义数组p[i]表示以i为中心的(包含i这个字符)回文串半径长将字符串s从前扫到后for(inti=0;imaxlen,则初始化p[i+k]=1;//本身是回文串然后p[i+k]左右延伸,即while(s[i+k+p[i+k]]==s[i+k-p[i+k]])++p[...
分类:
编程语言 时间:
2015-08-12 23:03:33
阅读次数:
135
http://acm.hdu.edu.cn/showproblem.php?pid=5371/*先用Manacher算法得出最长回文子串,然后用set维护ans的值对所有回文的长度进行排序, 那么之后的点如果覆盖了最接近的点那么那么点肯定是覆盖了当前点,用二分得到最近不大于u的距离S.upper_b...
分类:
其他好文 时间:
2015-08-12 21:36:40
阅读次数:
106
题意:给出一个字符串,要求出一个最长子串的长度,子串满足可以将其分成三部分,第一部分跟第二部分互为回文串,第三部分跟第一部分一样。
做法:
先用求回文串的Manacher算法,求出以第i个点和第i+1个点为中心的回文串长度,记录到数组c中 比如 10 9 8 8 9 10 10 9 8 我们通过运行Manacher求出第i个点和第i+1个点为中心的回文串长度 0 0 6 0 0 6 0...
分类:
其他好文 时间:
2015-08-12 19:38:37
阅读次数:
95
先用求回文串的Manacher算法,求出以第i个点和第i+1个点为中心的回文串长度,记录到数组c中 比如 10 9 8 8 9 10 10 9 8 我们通过运行Manacher求出第i个点和第i+1个点为中心的回文串长度 0 0 6 0 0 6 0 0 0
两个8为中心,10 9 8 8 9 10是个回文串,长度是6。 两个10为中心,8 9 10 10 9 8是个回文串,长度是6。
...
分类:
其他好文 时间:
2015-08-12 19:30:43
阅读次数:
80
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5371这道题用到了Manacher算法,首先简单介绍一下Manacher算法:---------------------------------------------------------------...
分类:
其他好文 时间:
2015-08-12 18:48:55
阅读次数:
138
题目地址:HDU 5371
题意:给你一个具有n个元素的整数序列,问你是否存在这样一个子序列,该子序列分为三部分,第一部分与第三部分相同,第一部分与第二部分对称,如果存在求最长的符合这种条件的序列。
思路:用Manacher算法来处理回文串的长度,记录下以每一个-1(Manacher算法的插入)为中心的最大回文串的长度。然后从最大的开始穷举,只要p[i]-1即能得出以数字为中心的最大回文串的长度...
分类:
编程语言 时间:
2015-08-12 16:48:58
阅读次数:
158