![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
manacher
zhhx2001
这个作者很懒,什么都没留下…
展开
-
hdu3068(manacher O(n) 回文算法 模版)
先在每两个相邻字符中间插入一个分隔符,当然这个分隔符要在原串中没有出现过。一般可以用‘#’分隔。这样就非常巧妙的将奇数长度回文串与偶数长度回文串统一起来考虑了(见下面的一个例子,回文串长度全为奇数了) 并且最开始加一个'$'字符,防止越界; 至于'#'字符,应该在最前面和最后面都要加,且不能忽视(n长度要算在这个位置后面),一个符合的情况 $ # a # a # a # a原创 2016-08-08 21:58:58 · 255 阅读 · 0 评论 -
bzoj2342(双倍回文)
本来需要set,并查集等数据结构优化来着,被我暴力水过了。。。 双倍回文,反正肯定要跑一遍manacher 对于每一个#位置,在i-p【i】/2~i之间枚举找到一个最小的i,使得i+p【i】>i,就是说,在它左边属于回文范围内找到一个最长的回文,保证要挨着i,因为在i的回文p【i】范围内,所以右边和左边对称,光处理左边即可 #include #include #include原创 2016-08-10 11:16:57 · 504 阅读 · 0 评论