博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【51NOD-0】1089 最长回文子串 V2(Manacher算法)
阅读量:6548 次
发布时间:2019-06-24

本文共 829 字,大约阅读时间需要 2 分钟。

【算法】回文树

#include
#include
#include
using namespace std;const int maxn=100010;struct trees{
int len,fail,t[260];}t[maxn];char s[maxn];int n,len,l,sz,ans;int getfail(int x){ while(s[len-t[x].len-1]!=s[len])x=t[x].fail; return x;}void tree_work(){ int x=s[++len]; l=getfail(l); if(!t[l].t[x]) { sz++; t[sz].len=t[l].len+2; if(t[sz].len>ans)ans=t[sz].len; t[sz].fail=t[getfail(t[l].fail)].t[x];//偏小 t[l].t[x]=sz; } l=t[l].t[x];}int main(){ scanf("%s",s+1); n=strlen(s+1); sz=1; s[0]=-1;// t[0].len=0;t[1].len=-1; t[0].fail=t[1].fail=1; len=l=ans=0; for(int i=1;i<=n;i++)tree_work(); printf("%d",ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/onioncyc/p/6946143.html

你可能感兴趣的文章
汇编字符串拷贝
查看>>
Lambda的前世今生
查看>>
TCP/IP模型简介和/etc/hosts文件说明
查看>>
UIButton常用属性
查看>>
主键自增归0
查看>>
mysql之 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 11
查看>>
如何批量修改文件后缀的方法
查看>>
Effective STL 笔记
查看>>
[LeetCode] 1. Two Sum
查看>>
POJ2538 ZOJ1884 UVA10082 WERTYU【输入输出】
查看>>
HDU5620 KK's Steel(C++语言版)
查看>>
旋转卡壳
查看>>
2016/10/09
查看>>
自定义HorizontalScrollView的scrollBar
查看>>
c++学习笔记和思考
查看>>
27.Docker集群部署
查看>>
DNS保存
查看>>
IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
查看>>
第一周冲刺第五天博客
查看>>
[LeetCode]Longest Increasing Path in a Matrix
查看>>