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 · 118 阅读 · 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 · 140 阅读 · 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 · 139 阅读 · 0 评论