Manacher算法: 参考资料:https://segmentfault.com/a/1190000003914228 http://www.cnblogs.com/biyeymyhjob/archive/2012/10/04/2711527.html 代码: 动态规划: dp[i][j] = 1 ...
分类:
其他好文 时间:
2017-06-24 13:19:54
阅读次数:
160
HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称。 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度。 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法。求出以第i个点为中心的 ...
分类:
其他好文 时间:
2017-06-13 00:05:13
阅读次数:
224
这道题哇 其实是裸的manacher 无论怎么变 是回文的就是回文 所以 特殊处理一下输出就好了 不过最后的左右端点l,r。l=(p-p[pos]+2)/2-1,r=(p+p[pos]-2)/2-1; 这个自己看一下就okay呐 #include<cstdio> #include<cstring> ...
分类:
编程语言 时间:
2017-06-07 20:52:41
阅读次数:
198
【算法】回文树 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=100010; struct trees{int len,fail,t[260];}t[maxn]; ...
分类:
编程语言 时间:
2017-06-05 18:01:02
阅读次数:
182
若字符串长度为n,则算法的时间复杂度为o(n) 假设有一个字符串abaaba 先把该字符串变成$ # a # b # a # a # b # a # 第一个字符设为‘$’,防止计算的时候数组越界 再计算p数组,先给出p数组的答案 i为坐标,ma数组放改变后的字符串,p数组代表以该字符为中心,向右和向 ...
分类:
编程语言 时间:
2017-05-29 12:04:58
阅读次数:
173
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-se ...
分类:
编程语言 时间:
2017-05-27 13:23:14
阅读次数:
245
引言 相信大家都玩过折叠纸张,如果把回文串相当于折叠一个A4纸,比如ABCDDCBA就是沿着中轴线(D与D之间)对折重合,那么这个就是一个回文串。或者是ABCDEDCBA的中轴线就是E,那么沿着中轴线对折也是重合的,所以这个字符串也是一个回文串。 判断一个字符串中的最长回文子串,我们可以对每个字符的 ...
分类:
编程语言 时间:
2017-05-26 18:22:43
阅读次数:
227
在上篇《manacher算法处理最长的回文子串(一)》解释了manacher算法的原理,接着给该算法,该程序在leetcode的最长回文子串中通过。首先manacher算法维护3个变量。一个名为radius[i]的数组,表示以i为中心轴承的回文子串的半径,如abcdcba中,字符d的下标为4,则他的 ...
分类:
编程语言 时间:
2017-05-26 18:21:31
阅读次数:
224
https://nanti.jisuanke.com/t/15428 题目大意:离散表示的字符串,求其最长回文串长度。 解题关键:若只用Manacher算法,在统计sum时会超时,所以加一个树状数组来维护前n项和,即可AC。 注意进行Manacher时,i是从1开始的,不要小也不要大。 ...
分类:
其他好文 时间:
2017-05-16 18:39:22
阅读次数:
185
http://acm.hdu.edu.cn/showproblem.php?pid=3068 题目大意:求最长回文串的长度。 解题关键:Manacher算法 引用一个较好的解释 可以这么说,这行要是理解了,那么马拉车算法基本上就没啥问题了,那么这一行代码拆开来看就是 如果mx > i, 则 p[i] ...
分类:
编程语言 时间:
2017-05-16 17:22:56
阅读次数:
157