题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2565

记录一下每个点往前最长延伸位置,正反两遍,枚举分割点。

  1. #include<cstring>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstdio>
  5. #define rep(i,l,r) for (int i=l;i<=r;i++)
  6. #define down(i,l,r) for (int i=l;i>=r;i--)
  7. #define clr(x,y) memset(x,y,sizeof(x))
  8. #define ll long long
  9. #define maxn 100500
  10. using namespace std;
  11. int len[maxn],cnt[maxn],p1[maxn],p2[maxn],fail[maxn],s[maxn],to[maxn][];
  12. int n,ans,tot,last,L,len1,len2;
  13. char ch1[maxn],ch2[maxn];
  14. void init(){
  15. len[tot=]=; len[++tot]=-;
  16. fail[]=; s[n=]=-; last=;
  17. clr(to,);
  18. }
  19. void add(int c,int p[]){
  20. s[++n]=c;
  21. int tmp,cur,now;
  22. for (cur=last;s[n-len[cur]-]!=c;cur=fail[cur]);
  23. if (!to[cur][c]){
  24. len[++tot]=len[cur]+; now=tot;
  25. for (tmp=fail[cur];s[n-len[tmp]-]!=c;tmp=fail[tmp]);
  26. fail[now]=to[tmp][c];
  27. to[cur][c]=now;
  28. } last=to[cur][c];
  29. cnt[last]++;
  30. p[n]=n-len[last]+;
  31. }
  32. int main(){
  33. scanf("%s",ch1); L=strlen(ch1);
  34. rep(i,,L-) ch2[L--i]=ch1[i];
  35. init();
  36. rep(i,,L-) add(ch1[i]-'a',p1);
  37. init();
  38. rep(i,,L-) add(ch2[i]-'a',p2);
  39. rep(i,,L-){
  40. len1=i-p1[i]+;
  41. len2=L-i-p2[L-i]+;
  42. ans=max(ans,len1+len2);
  43. }
  44. printf("%d\n",ans);
  45. return ;
  46. }

BZOJ2565: 最长双回文串(回文树)的更多相关文章

  1. BZOJ2565 最长双回文串 【Manacher】

    BZOJ2565 最长双回文串 Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"c ...

  2. BZOJ2565最长双回文串——manacher

    题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T,即可将T分为两 ...

  3. BZOJ2565:最长双回文串(Manacher)

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同). 输入长度为n的串S,求S的最长双回文子串T ...

  4. p4555&bzoj2565 最长双回文串

    传送门(洛谷) 传送门(bzoj) 题目 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为 nnn 的串 SSS ...

  5. BZOJ2565: 最长双回文串(Manacher)

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...

  6. 2019.03.02 bzoj2565: 最长双回文串(pam)

    传送门 题意简述:问最长的由两个回文串连接而成最长字串长度. 思路: 正反串各建一个pampampam然后就完了. 代码: #include<bits/stdc++.h> #define ...

  7. bzoj千题计划305:bzoj2565: 最长双回文串(回文自动机)

    https://www.lydsy.com/JudgeOnline/problem.php?id=2565 正着构造回文自动机 倒过来再构造一个回文自动机 分别求出以位置i开始的和结尾的最长回文串 # ...

  8. bzoj2565: 最长双回文串 pam

    题意:找一个串中的最长连续两个回文子串长度 题解:建两个回文树,一个正着,一个反着,每次add之后last的长度就是后缀最长的回文串长度,然后两边加一遍即可 /******************** ...

  9. bzoj2565 最长双回文子串

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...

  10. HYSBZ 2565 最长双回文串 (回文树)

    2565: 最长双回文串 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1377  Solved: 714 [Submit][Status][Dis ...

随机推荐

  1. iOS屏幕适配(尺寸适配)

    屏幕尺寸适配:一 在.pch中加入以下代码,在定义每个尺寸值的时候都调用下边的宏 //以iphone7为例 定义 view相关的宽高宏#define IPHONEHIGHT(b) [UIScreen ...

  2. iOS 网络状态判断方案(支持iOS11和iPhoneX)

    在之前的iPhone中.我们可以根据导航栏上方的网络状态view.来判断网络状态.(这种方案本来就不太好) 这种方案在iPhone X 手机上.不可使用. 我们可以通过 Reachability  来 ...

  3. 10本Java书籍推荐

    1. <深入理解Java虚拟机>是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中 ...

  4. Java <clinit> & <init>

    在编译生成class文件时,会自动产生两个方法,一个是类的初始化方法<clinit>, 另一个是实例的初始化方法<init>.     <clinit>:在jvm第 ...

  5. a:hover标签已经定义了text-decoration:none,并且生效,但是还是有下划线

    a标签在F12计算出来的样式里 text-decoration:none; 确实有被应用到.但是链接的下划线并没有被去掉... 解决办法:p:commandLink <p:commandLink ...

  6. Webpack 2 视频教程 006 - 使用快捷方式进行编译

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  7. CSS样式表学习

    ---恢复内容开始--- 今天学习的主要内容是样式表和选择器. 1.样式表的分类 1.内联式样式表 特点:能实现精确控制,但是范围太小.页面显示的优先级高于其他样式表 2.内嵌式样式表 特点:必须在h ...

  8. TurnipBit:DIY音乐盒教程实例

    一款可以自己DIY的音乐盒,要什么曲子,就自己谱曲啦!为他(她)制作一首他喜欢的音乐,来代表您的心意,也可以让他自己来制作他最爱的音乐哦!更可以带孩子一起体验谱写欢快的音乐. 最近发现一很好玩的中国式 ...

  9. android自定义文本框,后面带清空按钮

    android常见的带清空按钮的文本框,获得焦点时如果有内容则显示,否则不显示 package com.qc.health.weight; import com.qc.health.R; import ...

  10. FFmpeg AVPacket

    AVPacket注解 AVPacket 是一个结构体,存储压缩数据.可作为编码器的输出,解码器的输入. 对于 Video 一般包含一个压缩帧,对于 Audio 可能包含多个压缩帧. 编码器允许输出空 ...