[kuangbin带你飞] - Manacher 小题合集

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]进行从左到右进行探索。

猜你喜欢

转载自blog.csdn.net/qq_41428565/article/details/80166496