HDU - 3068 最长回文(manacher)
来源:互联网 发布:淘宝为什么关闭弘化社 编辑:程序博客网 时间:2024/05/29 04:36
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068
求最长回文串,manacher算法。具体可以看转载的blog,代码如下:
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>using namespace std;char line[220020],s[220020];int Mp[110010*2];void Manacher(int len){ int l = 0; s[l++] = '$'; s[l++] = '#'; for(int i = 0;i < len;i ++){ s[l++] = line[i]; s[l++] = '#'; } int id = 0, mx = 0; for(int i = 1;i < l;i ++){ Mp[i] = mx > i ? min(Mp[2*id-i],mx-i) : 1; while(s[i + Mp[i]] == s[i - Mp[i]]) Mp[i]++; if(i + Mp[i] > mx){ mx = i+Mp[i]; id = i; } }}int main(){ while(scanf("%s",&line) != EOF){ //memset(Mp,0,sizeof(Mp)); int ans = 0; int le = strlen(line); Manacher(le); for(int i = 0;i < le*2+2;i ++) ans = max(ans,Mp[i] - 1); cout<<ans<<endl; } return 0;}
0 0
- hdu 3068 最长回文 manacher
- HDU 3068 最长回文 Manacher
- hdu 3068 最长回文(manacher)
- HDU 3068 最长回文 // Manacher
- HDU 3068 最长回文 Manacher
- HDU 3068 最长回文(Manacher)
- 【HDU 3068】 最长回文|manacher
- HDU - 3068 最长回文(manacher)
- hdu 3068 最长回文(manacher)
- HDU 3068 最长回文 Manacher
- hdu 3068 最长回文 (manacher)
- HDU 3068(最长回文-manacher)[Template:manacher]
- HDU 3068 最长回文 [Manacher回文串]
- hdu 3068 最长回文(manacher&最长回文子串)
- hdu 3068 最长回文(最长回文子串 manacher算法)
- Hdu 3068 最长回文 (manacher算法)
- hdu 3068 最长回文 (manacher算法)
- HDU 3068 最长回文(Manacher 算法)
- c#入门第一章
- 洛谷 P1156 垃圾陷阱
- 归并排序
- 安卓中关于对话框的四种写法
- JSP和JS的区别(新手必读)
- HDU - 3068 最长回文(manacher)
- C primer plus 第七章 练习8:修改练习7,假设a,使程序提供一个选择工资等级的菜单,用switch选择工资等级,程序运行的开头应该像下面这样:
- hdu 4825 字典树
- weblogic启动时提示不能访问JRE
- Android控件架构(Android群英传)
- Java基础之比较器 Comparable和Comparator
- (Shadow Mapping) 阴影映射原理与实现
- 正则大法好,脏数据,呵呵。
- STM32F1_片内FLASH编程