manacher算法

模板##

void manacher(char s[],int n){
	int pos=0,mx=0;
	for(int i=1;i<=n;i++){
		if(i<mx) p[i]=min(p[(pos<<1)-i],mx-i]);
		else p[i]=1;
		while(s[i+p[i]]==s[i-p[i]]) p[i]++;
		if(i+p[i]>mx) mx=i+p[i],pos=i;
	}
}

习题##

posted @ 2018-08-15 13:29  LSQ647  阅读(122)  评论(0编辑  收藏  举报