Manacher 小题合集
X - 最长回文
题目链接: X - 最长回文 HDU - 3068
题意
给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度.
回文就是正反读都是一样的字符串,如aba, abba等
思路
最简单的Manacher的模板。
V - 吉哥系列故事――完美队形II
题目链接: V - 吉哥系列故事――完美队形II HDU - 4513
题意
给你一队人的身高,找到最长回文串,但是必须满足 小-大-小(非严格)
思路
这里的回文串没有那么简单了,需要动一下手脚,在进行判断p[i]的时候加了一段
while (ntr[i+p[i]] == ntr[i-p[i]] && ntr[i+p[i]] <= ntr[i+p[i]-2]) p[i] ++;
这样就一切ok啦
W - Girls’ research
题目链接:W - Girls’ research HDU - 3294
题意
给你一个字母和一个由小写字母构成的字符串,其中第一个字母代表着真实a的位置,例如给出’b’那么现在给出的字符串中的’b’都换成’a’,所有’c’都换成’b’……’a’换成’z’。第二个任务,就是要输出这其中的最长回文串的起始位置,和末尾,还要输出最长回文串。
思路
第一个问题挺简单的用个循环取模就行了,主要是第二个任务,就是要输出这其中的最长回文串的起始位置,和末尾,还要输出最长回文串,我的话经过探索,发现一个很好用的规律,就是在ntr数组中记录最长回文串的中心点,在依靠p[i]进行从左到右进行探索。