![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
manacher
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
UOJ #1100. [POI2007]对称轴osi
链接:https://darkbzoj.tk/problem/1100 题意:找多边形的对称轴个数。 思路:hash之后找一个环形回文串。等价于一个序列可以由两个回文串拼接而成。 #include <iostream> #include <cassert> #include <limits> using namespace std; #define ...原创 2019-10-25 18:16:40 · 158 阅读 · 0 评论 -
P4555 [国家集训队]最长双回文串
malacher裸题 注意malacher的数组应该开二倍。 #include <bits/stdc++.h> using namespace std; const int maxn = 200005; void manacher( const char* str,int* r ){ int mx(0),c(1),i,j; int len = strlen(st...原创 2019-10-09 17:34:19 · 87 阅读 · 0 评论 -
hdu 4513
题意:最长回文子串满足从左到中单调非减。 思路:改manacher的扩展条件,使得只有单调递增的时候进行扩展。 #include <bits/stdc++.h> using namespace std; const int maxn = 200005; const int inf= 0x3f3f3f3f; void manacher( const int* str,int* r,...原创 2019-10-09 19:05:29 · 173 阅读 · 0 评论 -
codeforces 17E
题意:求所有不相交的回文串的对数。 思路:正难则反,我们发现求相交的对数很难,于是我们求不相交的对数。具体方法是处理出以某个点为开始以及以某个点为结尾的回文串的对数。 总结一下我使用manacher的习惯: 1.首先我的开头和末尾都会添加‘ # ’。这样我求出的每一个回文串都以‘ # ’ 开头和结尾,我们求原串对应的回文串长度的时候只需要 / 2下取整 2.其次,我们求某一个位置开头的...原创 2019-10-09 23:37:33 · 88 阅读 · 0 评论