manacher
蜗角虚名羊
这个作者很懒,什么都没留下…
展开
-
bzoj1414: [ZJOI2009]对称的正方形&bzoj3705: 对称的正方形
题目 题解 首先我们考虑偶数个点和奇数个点的方阵枚举中心方式不太相同,我们用类似manacher的处理方法,填上一堆0,把他们全都变成奇数的情况。然后我们枚举每一个点作为中心,二分答案找到以这个点为中心最大的合法方阵。就可以直接统计这个点对答案的贡献了。这样已经是O(n^2logn)的了,我们需要O(1)判断一个方阵是否上下左右均对称。类似不用manacher求最长回文子串的方法,把这个...原创 2018-06-19 23:17:42 · 264 阅读 · 0 评论 -
洛谷P3805 【模板】manacher算法
题目题解#include<bits/stdc++.h>using namespace std;const int N=11000002;int i,j,ans,k,rad[N<<1],len;char s[N<<1],s1[N];int main(){ scanf("%s",s1+1),len=strlen(s1+1); for (i=1;i&...转载 2018-12-20 17:07:25 · 136 阅读 · 0 评论 -
bzoj2342: [Shoi2011]双倍回文
题目题解首先我可以看出:(1)我们找到的串的本身也是一个回文串(显然)(2)这个回文串的长度一定是偶数(显然)(3)左右两个串一定也是偶数长度的回文串(显然)那么我们先用manacher处理出以每个字符为中心的回文串长度由于我们所需处理的这些串的长度都为偶数,所以这些串的中心都在manacher时的那些填充字符上(显然)那么我们就先枚举大串的中心i,设左边小串的中心为j那么j+r...转载 2018-12-21 11:15:20 · 127 阅读 · 0 评论