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

20251117Manacher总结

Manacher

回文字符串是指正反读法完全相同的字符串。Manacher算法通过O(n)O(n)O(n)时间复杂度的计算,可以高效确定以每个字符为中心的最大回文半径。

我们采用动态规划算法进行求解。假设已经计算出0到 i 位置的回文半径,如何递推求解i+1位置的回文半径?

核心思想是利用已有信息进行状态转移。当 i+1 位置位于某个已知回文串(设其中心为 j )的覆盖范围内时,可以借助对称性,取 i+1 关于 j 的对称位置 k 的回文半径作为初始值。否则,i+1 位置的回文半径初始值设为 1 (仅包含自身字符)。

接下来进行边界检查:若 i+1 位置的回文半径仍有扩展空间,则继续向外扩展(需注意时间复杂度控制)。

为统一处理奇偶长度的回文串,我们在字符间和字符串首尾插入特殊分隔符。

P3805 【模板】Manacher

入门的题面字数,提高组的内容。

#include<bits/stdc++.h>usingnamespacestd;chara[11000005],c[22000005];intp[22000005];intmain(){cin>>a;intn=strlen(a);c[0]='#';for(inti=1;i<n*2;i+=2){c[i]=a[i/2];c[i+1]='#';}n*=2;n++;string b=c;intmx=1,len=0,rr=0;for(inti=1;i<n;i++){if(i<rr){p[i]=min(rr-i,p[len*2-i]);}intl=i-(1+p[i]);intr=i+(1+p[i]);while(l>=0&&r<n&&b.at(l)==b.at(r)){l--;r++;p[i]++;}if(p[i]>rr-len){len=i;rr=i+p[i];}mx=max(mx,p[i]);}cout<<mx;return0;}
http://www.jsqmd.com/news/131491/

相关文章:

  • 58、网络资源共享与Windows 8.1升级全攻略
  • Multisim环境下三极管开关电路温度特性模拟解析
  • 20251122树的直径、重心、中心
  • 59、Windows 8.1安装与通用快捷键指南
  • 基于协同过滤算法的新闻推荐系统(源码+lw+部署文档+讲解等)
  • 60、Windows 8.1使用指南:从基础操作到系统优化
  • 异常登录检测:AI识别可疑行为
  • 硬件安全模块HSM:最高级别密钥存储
  • 基于协同过滤推荐算法的音乐播放系统的设计与实现(源码+lw+部署文档+讲解等)
  • 20250908区间DP总结
  • Altium Designer中高速PCB蛇形走线的项目应用
  • 首屏加载时间优化:提升用户满意度
  • 小白指南:三极管驱动LED灯的基本电路结构
  • 实现智能体调用海量api
  • 桌面客户端发布:离线环境下稳定运行
  • 20250927树形DP
  • Xilinx XADC IP核驱动开发完整指南
  • 树莓派5安装ROS2所需存储空间深度剖析
  • 应急响应预案演练:关键时刻不慌乱
  • 静态数据加密:磁盘层面的安全保障
  • 20251103折半搜索总结
  • 全面讲解树莓派4的USB-C供电设计问题
  • 数字信号处理篇---复数
  • HSTS强制安全连接:杜绝降级威胁
  • 2025年度设计能力强的网站建设公司有哪些?国内十大服务商测评与企业适配指南
  • 图解说明FPU参与的单精度转换流程
  • 灾备切换实战测试:确保系统永不停机
  • 树莓派更换静态IP一文说清:适配最新Raspberry Pi OS
  • 官网FAQ自动更新:紧跟产品迭代节奏
  • 账单明细导出:清晰掌握消费构成