manacher
a10.
这个作者很懒,什么都没留下…
展开
-
hdu 4513
题目 这个考对manancher算法过程的理解,就拿板子改一下,然后在向外扩展的部分增加一些条件,然后就可以过了。 #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<cmath> #include<map> #include<string> #include<原创 2020-08-08 15:57:44 · 103 阅读 · 0 评论 -
hdu 3613
题目 这题比较考对manacher的理解,首先我们考虑如何判断前iii位和后jjj位是回文串(好多博客对这个点都没说清楚)。首先p[i]指的是以i为中心的最长回文半径(在manacher算法的新串中),且p[i]-1是在原串的回文长度,那我们是不是可以想,如果在新串中,以i为中心的串半径能达到左边界或者右边界,就说明前iii位或者后jjj位是回文串。既然这样,碰到左边界了,p[i]-1就是前iii位可以组成回文串,后jjj位同理,可能语言逻辑不大清晰,那就看看代码吧。 #include<cstdio&原创 2020-08-08 15:20:46 · 112 阅读 · 0 评论 -
hdu 3294
题目 题意有点难理解,意思就是先给你一个字符变换规则,然后求出变换后的字符串的最长回文字串。 首先这题要求我们理解manacher算法,p[i]代表什么等。我们可以在确定最长长度的时候记录位置,因为p[i]记录的是以i为中心的最长回文半径,所以就(pos±p[i]±1)/2就可以了。因为manacher会在字符串的每个字符前面上加标记,所以要/2。 #include<cstdio> #include<algorithm> #include<cstring> #includ原创 2020-08-08 15:05:51 · 124 阅读 · 0 评论