当前位置: 首页 > 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.gsyq.cn/news/144379.html

相关文章:

  • 59、Windows 8.1安装与通用快捷键指南
  • 基于协同过滤算法的新闻推荐系统(源码+lw+部署文档+讲解等)
  • 异常登录检测:AI识别可疑行为
  • 硬件安全模块HSM:最高级别密钥存储
  • Altium Designer中高速PCB蛇形走线的项目应用
  • 实现智能体调用海量api
  • 20250927树形DP
  • 20251103折半搜索总结
  • 2025年度设计能力强的网站建设公司有哪些?国内十大服务商测评与企业适配指南
  • 图解说明FPU参与的单精度转换流程
  • 灾备切换实战测试:确保系统永不停机
  • 12、Windows系统文件分析:回收站、预取文件与计划任务
  • 针对学生机房的proteus8.17下载及安装优化方案指南
  • 库存优化建议生成:数据驱动运营管理
  • 【机器学习】-带你弄懂时间序列
  • 13、Windows系统文件分析:Jump Lists、休眠文件与应用文件解析
  • 待办事项智能提醒:确保任务按时完成
  • 点击劫持防御:X-Frame-Options设置
  • 17.过保护读内存(通过内核(驱动)把应用数据复制到内核内存空间,然后返回给我们的3环程序实现)-Windows驱动
  • Realtek高清晰音频驱动配置详解:从零开始操作
  • Altium Designer四层板PCB绘制堆叠设计完整示例
  • 留存率提升策略:让用户爱上你的产品
  • 机器学习——Random Forest随机森林:b站up主 五分钟机器学习+time星君
  • 禁用64位系统32位文件重定向(C++代码)
  • 35、WPF 自定义控件与绘图指南
  • 3.端口隔离——隔离模式对比
  • 被罚2000万后,某电商大数据平台GDPR合规整改3个月复盘
  • ISO27001认证准备:信息安全管理体系建立
  • MOSFET半桥驱动电路设计实战案例
  • HBuilderX安装教程详解:新手快速上手操作指南