题面:P4555 [国家集训队]最长双回文串

题解:就、就考察马拉车的理解

在原始马拉车的基础上多维护个P[i]、Q[i]数组,分别表示以i结尾最长回文子串的长度和以i开头的最长回文子串的长度

然后就枚举断点,只能选择#作为断点,因为#..#才是一个字符串;第一个和最后一个#不能作为断点,因为答案要求|X|、|Y|都>=1

就维护答案

代码:

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #define max(a,b) ((a)>(b)?(a):(b))
  5. #define min(a,b) ((a)<(b)?(a):(b))
  6. #define re register
  7. using namespace std;
  8. const int maxn=(1e5)+;
  9. int len,cnt,mr,mid,RL[maxn<<],P[maxn<<],Q[maxn<<],ans=,a,b,toi,j;
  10. char S[maxn<<],O[maxn];
  11. inline void Manacher(){
  12. mr=mid=;
  13. for(re int i=;i<=len;i++){
  14. if(i<mr)RL[i]=min(mr-i,RL[(mid<<)-i]);
  15. else RL[i]=;
  16. while(S[i-RL[i]]==S[i+RL[i]]){
  17. P[i+RL[i]]=max(P[i+RL[i]],(RL[i]<<)+);
  18. Q[i-RL[i]]=max(Q[i-RL[i]],(RL[i]<<)+);
  19. RL[i]++;
  20. }
  21. if(i+RL[i]->mr){
  22. mr=i+RL[i]-;
  23. mid=i;
  24. }
  25. }
  26. return;
  27. }
  28. int main(){
  29. scanf("%s",O);
  30. len=strlen(O);
  31. S[]='$';
  32. S[cnt=]='#';
  33. for(re int i=;i<len;i++){
  34. S[++cnt]=O[i];
  35. S[++cnt]='#';
  36. }
  37. len=cnt;
  38. Manacher();
  39. for(re int i=len;i>=;i--){
  40. P[i]=max(P[i],P[i+]-);
  41. j=len-i+;
  42. Q[j]=max(Q[j],Q[j-]-);
  43. }
  44. toi=len-;
  45. for(re int i=;i<=toi;i++)
  46. if(S[i]=='#'){
  47. a=(P[i]-)>>;b=(Q[i]-)>>;
  48. ans=max(ans,a+b);
  49. }
  50. printf("%d\n",ans);
  51. return ;
  52. }

By:AlenaNuna

Manacher || P4555 [国家集训队]最长双回文串 || BZOJ 2565: 最长双回文串的更多相关文章

  1. P4555 [国家集训队]最长双回文串

    P4555 [国家集训队]最长双回文串 manacher 用manacher在处理时顺便把以某点开头/结尾的最长回文串的长度也处理掉. 然后枚举. #include<iostream> # ...

  2. 洛谷 P4555 [国家集训队]最长双回文串 解题报告

    P4555 [国家集训队]最长双回文串 题目描述 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同). 输入长度为\(n\)的串 ...

  3. 【洛谷】P4555 [国家集训队]最长双回文串

    P4555 [国家集训队]最长双回文串 题源:https://www.luogu.com.cn/problem/P4555 原理:Manacher 还真比KMP好理解 解决最长回文串问题 转化为长度为 ...

  4. 洛谷 P4555 [国家集训队]最长双回文串

    链接: P4555 题意: 在字符串 \(S\) 中找出两个相邻非空回文串,并使它们长度之和最大. 分析: 直接使用马拉车算法求出每个点扩展的回文串.如果枚举两个回文串显然会超时,我们考虑切割一个长串 ...

  5. BZOJ 2565: 最长双回文串 [Manacher]

    2565: 最长双回文串 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1842  Solved: 935[Submit][Status][Discu ...

  6. bzoj 2565: 最长双回文串 manacher算法

    2565: 最长双回文串 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...

  7. bzoj 2565: 最长双回文串

    Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同).输入 ...

  8. 洛谷 P4555 [国家集训队]最长双回文串(Manacher)

    题目链接:https://www.luogu.com.cn/problem/P4555 首先明白两个回文串,那么要使两个回文串成立,那么我们只能把$'#'$作为中间节点. 然后我们跑一边Manache ...

  9. 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)

    题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖 ...

随机推荐

  1. iOS AES-CBC、AES-ECB 加解密

    简介 AES是加密的算法,使用128.192 和 256 位密钥,将被加密数据划分为128位(16字节)一块,然后使用某种加密模式进行加密 关键词: 块大小:16字节 密钥长度:AES算法下,key的 ...

  2. Flutter工程目录

    1 目录结构 当使用flutter create myapp 创建纯flutter项目后,会自动生成初始化代码. 需要注意一下几个文件夹 2 资源 像图片.视频.文字等这些资源文件,在 Flutter ...

  3. RotateZoom.cpp——Inter

    // RotateZoom.cpp : Defines the entry point for the console application. // #include "stdafx.h& ...

  4. docker原理(转)

    转自:https://zhuanlan.zhihu.com/p/22382728 https://zhuanlan.zhihu.com/p/22403015 在学习docker的过程中,我发现目前do ...

  5. 2.k8s.Pod生命周期,健康检查

    #Pod生命周期,健康检查 pod创建过程 Init容器 就绪探测 存活探测 生命周期钩子 #Pod创建过程 master节点:kubectl -> kube-api -> kubenle ...

  6. 快速编写 <a> ————CSS3

    a{ text-decoration:none; } a:link{ color:white; } a:visited { color:white; } a:hover { color:blue; } ...

  7. Cocos2d-X网络编程(1) 网络基本概念

    网络模型 OSI层模型.TCP/IP的层模型如下所示. TCP/IP各层对应的协议如下所示. 通过初步的了解,我知道: IP协议:对应于网络层,是网络层的协议, TCP协议:对应于传输层,是传输层的协 ...

  8. Canvas入门06-线段与像素边界

    我们知道,使用以下2个API可以绘制一条线段: moveTo(x, y) 向当前路径中增加一条子路径,该子路径只包含一个点,此为线段的起始点 lineTo(x, y) 将线段的下一个点加入子路径中 c ...

  9. oracle中与mysql中的命令 show databases, show tables, desc table类似的命令集

    1 怎样执行一个sql脚本文件,这个脚本文件写了一系列的sql语句集,比如sql.sql 放在D:\MyEclipse 8.6\Workspaces\OASystem\WebRoot\sql.sql下 ...

  10. mysql数据库负载均衡高可用之主从、主主备份,实时同步

    一:MySQL Replication 什么是MySQL Replication Replication可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave) 默认情 ...