zoukankan      html  css  js  c++  java
  • 模板—字符串—Manacher

    模板—字符串—Manacher

    Code:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define N 11000010
    int len[N<<1],n,ans; char str[N],s[N<<1]; long long sum;
    namespace Manacher
    {
    	int init(char *str)
    	{
    		int n=strlen(str);
    		for(int i=1,j=0;i<=2*n;j++,i+=2)
    			s[i]='#',s[i+1]=str[j];
    		s[0]='$',s[2*n+1]='#',s[2*n+2]='@',s[2*n+3]='';
    		return 2*n+1;
    	}
    	void manacher(int l,int r)
    	{
    		int mx=0,p=0;
    		for(int i=l;i<=r;i++)
    		{
    			if(mx>i) len[i]=min(mx-i,len[2*p-i]);
    			else len[i]=1;
    			while(s[i-len[i]]==s[i+len[i]]) len[i]++;
    			if(len[i]+i>mx) mx=len[i]+i,p=i;
    		}
    	}
    }
    using namespace Manacher;
    int main()
    {
    	scanf("%s",str),n=init(str),manacher(1,n);
    	for(int i=1;i<=n;i++) ans=max(ans,len[i]/2*2-(i%2==0)),sum+=len[i]/2;
    	printf("%d %lld
    ",ans,sum);
    }
    

      

  • 相关阅读:
    dts--framework(三)
    dts--tests(三)
    dts--tests(一)
    dts--framework(二)
    dts--framework(一)
    Fiddler(一)
    javascript(二)
    javascript(一)
    scrapy--selenium(二)
    linux安装vmware出现kernel-header问题
  • 原文地址:https://www.cnblogs.com/yangsongyi/p/10656657.html
Copyright © 2011-2022 走看看