分类 Manacher 下的文章

BZOJ 2565: 最长双回文串

Solution记录下以每个字符开头/结尾的回文串的最大长度即可。Code#include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N = 300000; char t[N]; char s[N]; void init() { scanf("%s", t); int len = strlen(t); for(int i=0; i<len; i++) { s- 阅读剩余部分 -

【Manacher】BZOJ 2084: [Poi2010]Antisymmetry

题目描述对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串。比如00001111和010101就是反对称的,1001就不是。现在给出一个长度为N的01字符串,求它有多少个子串是反对称的。输入第一行一个正整数N (N <= 500,000)。第二行一个长度为 N 的 01 字符串。输出一个正整数,表示反对称子串的个数。样例输入811001011样例输出7题解一道裸的 manacher 算法题,只需要改一下判断条件就可以了。注意这道题合法的字串长度是偶数,所以字符串遍历时候每次递增 2。代码#include <cst- 阅读剩余部分 -