尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

浅谈马拉车

浅谈马拉车
📅 发布时间:2026/6/18 23:32:11

浅谈马拉车

马拉车其实挺好理解的,写篇博客以便复习。

正题

简介

Manacher主要的思想是回文串的对称性,即

  • 在一个大回文串中,一定存在一个与\(X\)关于回文对称中心对称的子串\(Y\),故我们利用已知的回文串搞事情.

算法流程


  1. 考虑回文串有ABA(对称中心为一个字符)和ABBA(对称中心为两个字符)两种情况,则每个字符间加一个特殊字符,成为|A|B|A|和|A|B|B|A|两种情况,此时都转成了对称中心为一个字符的情况.

  2. 考虑记录一个\(p\)数组,\(p[i]\)表示以\(i\)为对称中心能向外拓展的最大的回文串的半径长度.

  3. 从左到右遍历字符串\(s\) , 过程中维护一个变量\(r\),表示当前已知的回文串中右端点最靠右的右端点的下标,维护一个变量\(mid\),表示右端点最靠右的回文串的对称中心的下标.

  4. 枚举\(i\),若\(i\le r\),则考虑与\(i\)关于\(mid\)的对称点\(j = mid*2-i\) , 我们就已经找到一个现成的回文串,即\([j-p[j]+1,j+p[j]-1]\),需要注意的是,若\(p[j] > r-i+1\),则长度大于\(r-i+1\)的部分是不回文的,故\(p[i] = min(p[j],r-i+1)\).

  5. 考虑拓展回文,尝试更新\(r\)和\(mid\)。


时间复杂度分析

  • 若\(p[j] < r-i+1\) , 则已经证明了第三步的拓展是不可能成功的,即\(p[i]\)就不会耗费时间拓展.
  • 否则,考虑若向外拓展成功,每拓展一次\(r\)便会增加一,考虑\(r\)最多只会到\(n\),故时间复杂度为\(O(n)\).

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1.1e7+15;
int p[N<<1];
char a[N*2];
int read(){int tot;char ch = getchar();a[0]='@',a[tot=1]='|';//考虑在0处添加一个@,避免端点拓展时越界while(ch<'a'&&'z'<ch)  ch = getchar();while('a'<=ch&&ch<='z') a[++tot] = ch , a[++tot] = '|' , ch = getchar();return tot;
}
int main(){int n = read();int ans = 0;for(int i = 1 , mid = 0 , r = 0 ; i<=n ; i++){if(i<=r) p[i] = min(p[(mid<<1)-i],r-i+1);while(a[i-p[i]]==a[i+p[i]]) ++p[i];if(i+p[i]-1>r) r = i+p[i]-1 , mid = i;ans = max(ans,p[i]);}cout<<ans-1;return 0;
}

相关新闻

  • 十七、异常和中断响应过程的时序图
  • 直播平台搭建,浏览器中的事件循环与Node中的事件循环 - 云豹科技
  • Redisson 分布式锁的实现原理 - 教程

最新新闻

  • 2026南阳黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 2026厦门黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 2026荆州黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • AAFF论坛精粹|光影与新生:赵非、卞灼跨越代际的影像哲思
  • lsyat门禁闸机获取历史记录—幽冥大陆(一百38)-东方仙盟
  • Kafka07-集成-尚硅谷

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号