{Manacher}hdu3068
来源:互联网 发布:中智留学 知乎 编辑:程序博客网 时间:2024/05/21 22:35
最大回文串Manacher算法
1.统一问题:把长度为偶数和奇数的串统一,,\
"abc"->"#a#b#c#";
"abcd"->"#a#b#c#d#"
2.充分利用已知条件:
记p[id]为:以str[id]为中心,最大的回文串半径
str[]=# a # b # c # b # c # c #
p[]=1 2 1 2 1 4 1 2 1 2 3 2 1
可见p[id]-1为实际回文串长度
设两个标记(来避免无谓的重复匹配)
1.mx标记:所有回文串中最右的元素
2.id标记:mx所在回文串的中心
3.实践:
{int mx=0,id;for (int i=1;i<=n;i++){if (mx > i)p[i]=min(p[id-(i-id),mx-i);elsep[i]=1;while (str[i+p[i]==str[i-p[i]])p[i]++;if (p[i]+i>mx){mx=p[i]+i;id=i;}}}
图转自http://blog.csdn.net/ggggiqnypgjg/article/details/6645824
- {Manacher}hdu3068
- manacher hdu3068
- hdu3068(Manacher)
- hdu3068 Manacher算法
- hdu3068(manacher算法)
- hdu3068(Manacher算法)
- 【HDU3068】最长回文【manacher】
- HDU3068 最长回文 manacher
- 【HDU3068】最长回文【Manacher】
- hdu3068 Manacher模板
- hdu3068 manacher算法模板
- 最长回文 hdu3068 manacher
- Manacher HDU3068 最长回文
- manacher算法&hdu3068
- hdu3068 manacher模版
- HDU3068[最长回文]--Manacher
- hdu3068回文串Manacher算法
- hdu3068之manacher算法+详解
- 复数类c++
- heritrix的web应用2(10.2.3 Frontier链接制造工厂 )
- Hibernate 解决n+1问题
- 内核是如何管理内存的
- Java的calendar类用法
- {Manacher}hdu3068
- 随机函数
- 二分查找的java实现
- Java堆,栈和常量池(2)
- Lucene4.5索引的创建与搜索
- 内存管理
- 页面缓存——内存与文件的那些事儿
- csdn技术分享-----------------------------郑州化州阳春遵义阜康仪征贺州寿光郑州绵阳
- 动态规划算法之矩阵链乘法