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算法相关推荐

  1. 模板 manacher算法

    字符串的最长回文串长度O(N)算法. 主要是利用了回文串的对称性,利用已有的子串更新答案. 然后拓展答案. 详细讲解还是问dalao吧 我是蒟蒻QAQ 代码(luoguP3805) 1 #includ ...

  2. Manacher 算法模板

    简介 在字符串的题目中,有时会遇上 回文串 这样一个名词 顾名思义,回文串 就是 正读和反读都一样的字符串 而 最长回文子串 ,就是在一个字符串的所有子串中,是回文串且长度最长的那个 求最长回文子串最 ...

  3. P3805 【模板】manacher算法

    思路 manache的板子 manacher是一种能在O(n)的时间复杂度内求出最长回文子串的一种算法 首先要在每个串之间加上'#',使得奇数长度和回文串和偶数长度的回文串可以被统一考虑 之后要在首位 ...

  4. 最长回文(Manacher算法模板)

    题目描述 给出一个只由小写英文字符a,b,c-y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组,每 ...

  5. P3805 【模版】manacher算法(manacher)

    P3805 [模版]manacher算法 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a ...

  6. 牛客练习赛 57——manacher算法 树形dp?

    A - Tic-Tac-Toe 直接考虑每个人8种赢的情况即可. #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragm ...

  7. Manacher算法 - 求最长回文串的利器

    求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...

  8. HDU3068 最长回文【manacher算法】

    最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  9. URAL1297 Palindrome【manacher算法】

    1297. Palindrome Time limit: 1.0 second Memory limit: 64 MB The "U.S. Robots" HQ has just ...

  10. manacher算法学习(求最长回文子串长度)

    Manacher总结 我的代码 学习:yyb luogu题目模板 xzy的模板 #include<iostream> #include<cstdlib> #include< ...

最新文章

  1. javascript学习笔记2
  2. linux shell编程之菜单选择(二)
  3. 《成为一名机器学习工程师》_如何在2020年成为机器学习工程师
  4. 1043 幸运号码 数位DP
  5. 机器学习常用数学公式
  6. SCI论文编辑教你如何准备SCI论文和写作
  7. iOS开发之国际化(二)
  8. php 便利字符串,Go语言遍历字符串——获取每一个字符串元素
  9. FastStone Capture无法录制系统声音解决方法(win10)
  10. ele 多个表格 tab切换后 多选, 复选出现的问题
  11. 论文阅读 | Combating Adversarial Misspellings with Robust Word Recognition
  12. 【干货】数据集网站汇总!
  13. 【微信文章封面】微信分别设置封面图和分享图的技巧
  14. html 定义列表dddt,一个微服务+DDD(领域驱动设计)的代码结构示例
  15. Python3.7学习笔记30-垃圾回收机制
  16. 安全级别(security level)
  17. Java的基本学习(五)——高级UI设计与异常处理
  18. delegate 用法
  19. Vue脚手架创建TS项目
  20. Pytorch lstm中batch_first 参数理解使用

热门文章

  1. 序列每天从0开始_序列比对(十一)——计算符号序列的全概率
  2. netty springmvc_springmvc源码架构解析之HandlerMapping
  3. 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...
  4. java os库_java-Mac OS X上的JNotify?
  5. 360浏览器5兼容模式吗_个独模式真能将企业总体税负降低至5%吗,为何大家都热衷核定征收...
  6. python的基础知识可以应用到哪方面-Python基础知识
  7. C++ 学习之旅(10)——static与extern
  8. 提升对前端的认知,不得不了解Web API的DOM和BOM
  9. 找出数组中第i小元素(时间复杂度Θ(n)--最坏情况为线性的选择算法
  10. linux系统shell知识点,linux shell 知识点