当前位置: 首页 > news >正文

manacher

算法理解

建议阅读算法竞赛上的讲解,阅读之前请先阅读以下文字

算法本质是从一个字符往两边进行扩展,然后找到最长的回文串

\(p[i]\) 表示以 \(s[i]\) 为中心的回文子串的最长回文半径(回文半径包括中心字符)

考虑递推过程,也就是 \(p[1]...p[i-1]\) 已经预处理完了

\(R\) 表示以 \(1...i-1\) 为中心的回文串最大为 \(R\)

\(C\) 表示 \(R\) 所对应的回文串中心为 \(C\)

好了,接下来开始阅读算法竞赛吧

代码

因为manacher本质上是求奇回文子串,先放一个求奇回文子串的代码

void manacher(){int R=0,C=0;for(int i=1;i<=n;i++){if(i<R)  p[i]=min(p[C*2-i],R-i);else  p[i]=1;while(s[i+p[i]]==s[i-p[i]])  p[i]++;if(p[i]+i>R){R=p[i]+i;C=i;}}
}
http://www.sczhlp.com/news/6786/

相关文章:

  • $\text{Linux}$ 网络编程
  • 【JavaSE】BigDecimal是不可变对象(immutable)
  • zerotier进行内网穿透
  • etcd对boltdb的使用和改进
  • The Subway
  • 8月6日随笔
  • 微软藏得太深! 99%的人不知道的免费录制4K视频隐藏功能 超好用!
  • 《LabVIEW 2025 安装全流程图解:新手也能一次搞定!》
  • bsc 静态节点部署 - 若
  • arduino开发你好小智(2)外设led,温湿度传感器,舵机设备控制 - MKT
  • U++第三方库导入
  • Sentinel与OpenFeign整合
  • 2025“钉耙编程”中国大学生算法设计暑期联赛(6)
  • 【分享】目录名太长导致Vivado和Vitis编译失败
  • 零信任架构技术指南:腾讯iOA助力大规模企业安全转型
  • bsc basefee的影响参数 - 若
  • VS Code配置Go语言开发环境v2
  • HFSS许可优化管理
  • 洛谷题单指南-状态压缩动态规划-P2831 [NOIP 2016 提高组] 愤怒的小鸟
  • LDPC 原理以及译码原理(硬解和软解)
  • 3000 台 JuiceFS Windows 客户端性能评估
  • 保护器各功能模块
  • python 模块导入
  • 恋上Manim之Python安装
  • 【Java 温故而知新系列】基础知识-06 深入理解String类
  • C++ 中创建目录,判断目,文件
  • 哪些离线语音芯片适用于家电设备
  • 题2
  • 中国 Apache 项目 OpenRank 排行榜 Top 20:白鲸开源深度参与两大上榜项目
  • 粒子模拟效率提升50%!StokeMX 2.6安装激活教程全解锁