Hdu 5371 Manacher算法
2015-08-13 09:59
169 查看
Manacher算法:对于字符串str[ ], 找出所有以str[i]为中心的回文串的最长长度。
#include<stdio.h> #include<algorithm> using namespace std; const int N = 100008; int a ; int b[N<<1]; int p[N<<1]; int len; void kp() { int mx = 0, id = 0; for(int i = 0; i < len; i++) { if(mx > i) p[i] = min(p[(id<<1) - i], mx - i); else p[i] = 1; for(; i - p[i] >= 0 && b[i - p[i]] == b[i + p[i]]; p[i]++); if(p[i] + i > mx) { mx = p[i] + i; id = i; } } } int main () { int t; scanf("%d", &t); int k = 1; while(t--) { int n; scanf("%d", &n); len = 0; b[len++] = -1; for(int i = 0; i < n; i++){ scanf("%d", &b[len++]); b[len++] = -1; } kp(); int ans = 1; for(int i = 2; i < len-1; i += 2) { for(int j = ans; j <= p[i]; j+=2) { if(p[i+j-1] >= j) ans = j; } } printf("Case #%d: %d\n", k++, ans/2*3); } return 0; } /* 10 10 3 2 2 3 3 2 15 6 7 0 */
相关文章推荐
- 补间动画
- PHP中XML-RPC使用笔记
- 整理 Android 横竖屏切换时候activity的生命周期
- 常用数据库 JDBC URL 格式 分类: Java 2011-01-19 14:55 21582人阅读 评论(1) 收藏 举报 jdbcurl数据库teradatasqlservermicroso
- jQuery获取鼠标坐标
- poj 1879 Truck History
- 从100PV到1亿级PV网站架构演变
- Runtime理解
- 优秀网站收藏
- 集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(三)
- 11G新特性 -- Statistics Preferences
- Android验证手机号、用户名正则表达式
- ESX5.1 安装Hyper v
- 截取字符,中英混合无乱码。 一个汉字当作一个字符
- Qt Quick 版本
- 九度 Online Judge 算法 刷题 题目1018:统计同成绩学生人数
- 造轮子之商业下拉菜单
- 博弈论之Nim问题
- html中submit和button的区别(总结)
- 谈谈 React.js 的核心入门知识