题意:假设有n个人按顺序的身高分别是h[1], h[2] ... h[n],从中挑出一些人形成一个新的队形,新的队形若满足以下要求,则就是新的完美队形: 1、连续的 2、形成回文串 3、从左到中间那个人,身高需保证不下降 问有组成完美队形的最多人数 题解:Manacher算法的变形。 首先我们来解释 ...
分类:
其他好文 时间:
2016-09-14 23:24:21
阅读次数:
251
转载:https://www.felix021.com/blog/read.php?2040 首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步减 ...
分类:
编程语言 时间:
2016-09-04 17:17:22
阅读次数:
204
manacher:可以解决最长回文问题。
算法:1.首先,将字符串的每个字符左右加入#,并在s0位置加入*(如果字符串中本身含有这些,则换成未出现过的字符),此时字符串的长度为len+len+3,即加...
分类:
编程语言 时间:
2016-08-29 15:38:32
阅读次数:
535
题目描述:Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因 ...
分类:
编程语言 时间:
2016-08-28 17:58:48
阅读次数:
210
Manacher算法O(n) 因为对于偶回文,是需要从虚轴扩充,ab,ba,所以如下: 先把原字符串处理,都加上一个标记符,比如#(特殊字符任何都可以,对于计算结果不会有影响) 1221-->#1#2#2#1# 121-->#1#2#1# 按照处理后的字符串求它的最长回文串长度m,所以原始字符串最长 ...
分类:
编程语言 时间:
2016-08-28 17:57:09
阅读次数:
233
求最长回文子串的裸题,搞竞赛的时候遇到过各种花样的变式。
n方的朴素算法已经烂大街了,推荐使用O(n)的算法,只可惜很久没用过manacher算法,不会写了,所以花了一段时间温故知新。
manacher算法原理不了解的道友可以看这篇文章:...
分类:
其他好文 时间:
2016-08-24 15:54:14
阅读次数:
167
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5158 Accepted Submission(s): 1755
Problem Description
给出一个只由小写英文字符a,b,c...y...
分类:
编程语言 时间:
2016-08-24 14:46:02
阅读次数:
189
Manacher算法是求回文串最高效的算法,能在线性时间内求出以每一个字符为中心的最长回文串。 首先,我们都能想出O(N^2)求出每一个字符为中心的最长回文串的算法。那么我们考虑这样一种情况。 如果一个回文串内包含了回文串。那么是否可以减少重复的计算。 比如 abaaba 这个字符串,要求他的最长回 ...
分类:
编程语言 时间:
2016-08-21 15:10:15
阅读次数:
283
题目大意:给一个字符串,求所有相邻两回文子串的外侧下标之积的和 题目分析:另L[i]为所有以 i 为右端点的回文字串的左端点之和,同理,另R[i]表示所有以 i 为左端点的回文子串的右端点之和。显然,答案为sigma(L[i]*R[i+1]) 其中,1<=i<length(字符串)。求出L和R是关键 ...
分类:
编程语言 时间:
2016-08-06 11:13:37
阅读次数:
159