首页 > 程序开发 > 软件开发 > 其他 >

BZOJ 2342 双倍回文

2017-04-17

BZOJ 2342 双倍回文:求一个字符串中最大双倍回文串的长度(为4的倍数),整个串为回文串,它的一半也是回文串。

BZOJ 2342 双倍回文:求一个字符串中最大双倍回文串的长度(为4的倍数),整个串为回文串,它的一半也是回文串。
题解:manacher+乱搞,不知道为什么网上的大神都用各种高级的方法,可能比较快吧……但我也不慢啊……
代码:
#include
#include
#include
#include
using namespace std;
const int Q=500005;
char ss[Q],s[Q*2];
int n,len,l,p[Q*2];
int main()
{
	scanf("%d%s",&n,ss);
    s[0]='@';s[1]='#';
    len=2;
    l=strlen(ss);
    for(int i=0;imx)
        {
            mx=p[i]+i;
            id=i;
        }
    }
    int ans=0;
    for(int i=1;i<=len;i+=2) 
	{
		if(p[i]%2==0 || ans>=p[i]-1) continue;
		for(int t=i-(p[i]-1)/2;t=i) {ans=max(ans,(i-t)*2);break;}
	}
    printf("%d",ans);
}


相关文章
最新文章
热点推荐