【模板】Manacher算法
ACM模板
目录
- 初始化以及构造
初始化以及构造
数组下标从1开始即
cin>>s+1
由于奇回文串和偶回文串某些性质不同,我们首先通过init()
操作使得新串中所有回文串的长度都变成奇数,返回值是新串的长度(原串中的下标i
对应新串中的2i
)定义数组
p[]
,p[i]
表示新串中以下标i
为回文中心的最大回文半径。新串中每一个下标的
i
意味着原串中存在一个的长度是p[i]-1
的回文串时间复杂度:O(n)O(n)O(n)
const int N=2000010;
char s[2*N];
int p[2*N];
int init(char s[])
{int n=strlen(s+1);for(int i=2*n;i;i-=2){s[i]=s[i/2];s[i-1]='*';}s[2*n+1]='*';s[0]='@',s[2*n+2]='&';//哨兵return 2*n+1;
}
int manacher(int n)// 新串的长度
{int res=0;int now=0,mx=0;for(int i=1;i<=n;i++){p[i]=i<mx?min(p[2*now-i],mx-i):1;while(s[i+p[i]]==s[i-p[i]]) p[i]++;if(i+p[i]>mx){mx=i+p[i];now=i;}res=max(res,p[i]-1);//返回最大回文长度}return res;
}
【模板】Manacher算法相关推荐
- 模板 manacher算法
字符串的最长回文串长度O(N)算法. 主要是利用了回文串的对称性,利用已有的子串更新答案. 然后拓展答案. 详细讲解还是问dalao吧 我是蒟蒻QAQ 代码(luoguP3805) 1 #includ ...
- Manacher 算法模板
简介 在字符串的题目中,有时会遇上 回文串 这样一个名词 顾名思义,回文串 就是 正读和反读都一样的字符串 而 最长回文子串 ,就是在一个字符串的所有子串中,是回文串且长度最长的那个 求最长回文子串最 ...
- P3805 【模板】manacher算法
思路 manache的板子 manacher是一种能在O(n)的时间复杂度内求出最长回文子串的一种算法 首先要在每个串之间加上'#',使得奇数长度和回文串和偶数长度的回文串可以被统一考虑 之后要在首位 ...
- 最长回文(Manacher算法模板)
题目描述 给出一个只由小写英文字符a,b,c-y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组,每 ...
- P3805 【模版】manacher算法(manacher)
P3805 [模版]manacher算法 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a ...
- 牛客练习赛 57——manacher算法 树形dp?
A - Tic-Tac-Toe 直接考虑每个人8种赢的情况即可. #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragm ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- HDU3068 最长回文【manacher算法】
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- URAL1297 Palindrome【manacher算法】
1297. Palindrome Time limit: 1.0 second Memory limit: 64 MB The "U.S. Robots" HQ has just ...
- manacher算法学习(求最长回文子串长度)
Manacher总结 我的代码 学习:yyb luogu题目模板 xzy的模板 #include<iostream> #include<cstdlib> #include< ...
最新文章
- javascript学习笔记2
- linux shell编程之菜单选择(二)
- 《成为一名机器学习工程师》_如何在2020年成为机器学习工程师
- 1043 幸运号码 数位DP
- 机器学习常用数学公式
- SCI论文编辑教你如何准备SCI论文和写作
- iOS开发之国际化(二)
- php 便利字符串,Go语言遍历字符串——获取每一个字符串元素
- FastStone Capture无法录制系统声音解决方法(win10)
- ele 多个表格 tab切换后 多选, 复选出现的问题
- 论文阅读 | Combating Adversarial Misspellings with Robust Word Recognition
- 【干货】数据集网站汇总!
- 【微信文章封面】微信分别设置封面图和分享图的技巧
- html 定义列表dddt,一个微服务+DDD(领域驱动设计)的代码结构示例
- Python3.7学习笔记30-垃圾回收机制
- 安全级别(security level)
- Java的基本学习(五)——高级UI设计与异常处理
- delegate 用法
- Vue脚手架创建TS项目
- Pytorch lstm中batch_first 参数理解使用
热门文章
- 序列每天从0开始_序列比对(十一)——计算符号序列的全概率
- netty springmvc_springmvc源码架构解析之HandlerMapping
- 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...
- java os库_java-Mac OS X上的JNotify?
- 360浏览器5兼容模式吗_个独模式真能将企业总体税负降低至5%吗,为何大家都热衷核定征收...
- python的基础知识可以应用到哪方面-Python基础知识
- C++ 学习之旅(10)——static与extern
- 提升对前端的认知,不得不了解Web API的DOM和BOM
- 找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法
- linux系统shell知识点,linux shell 知识点