zoj 2744 Palindromes

zoj 2744 Palindromes,第1张

zoj 2744 Palindromes
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=5010;char s[N*2],str[N];int p[N*2],n;void init(){ n=strlen(str); s[0]='$'; s[1]='#'; for(int i=0; i<n; i++) { s[i*2+2]=str[i]; s[i*2+3]='#'; } n=n*2+2; s[n]='';}void Manacher(){ int k=0; int pos; for(int i=1;i<n; i++) { if(k>i) p[i]=min(p[2*pos-i],k-i); else p[i]=1; while(s[i+p[i]]==s[i-p[i]]) p[i]++; if(p[i]+i>k) k=p[pos=i]+i; }}int main(){ while(~scanf("%s",str)) { init(); Manacher(); int res=0; for(int i=1;i<n; i++) res+=(p[i]/2); printf("%dn",res); } return 0;}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4923749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存