居然能够做到O(n)的复杂度求最长回文。,也是给跪了。

以下这个人把manacher讲的很好,,能够看看

http://blog.csdn.net/xingyeyongheng/article/details/9310555

我就照着他的代码敲了一遍贴了个模板。。

#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std; const int MX = 1e6 + 5; char s[MX * 2];//记得要开两倍
int p[MX * 2]; int manacher(char *s){
int len = strlen(s), id = 0, ans = 0;
for(int i = len; i >= 0; i--) {
s[i + i + 2] = s[i];
s[i + i + 1] = '#';
}
s[0] = '*';//防越界,非常重要!!
for(int i = 2; i < 2 * len + 1; ++i) {
if(p[id] + id > i) p[i] = min(p[2 * id - i], p[id] + id - i);
else p[i] = 1;
while(s[i - p[i]] == s[i + p[i]]) p[i]++;
if(id + p[id] < i + p[i]) id = i;
ans = max(ans, p[i] - 1);
}
return ans;
} int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%s", s);
printf("%d\n", manacher(s));
}
return 0;
}

最新文章

  1. 利用C#开发移动跨平台Hybrid App(一):从Native端聊Hybrid的实现
  2. Inside Flask - app.py - 2
  3. 冲突--ListView与ScrollView冲突的4种解决方案
  4. Tomcat部署Web应用方法总结
  5. POJ 3792 Area of Polycubes(思维)
  6. Python实现简单的HTTP服务器(支持文件上传下载)
  7. angular.js学习笔记:实现商品价格计算实例
  8. 浅谈JS的继承
  9. 【swift-总结】函数
  10. hdu_1029_hash/map
  11. Linux_修改hosts
  12. RVM Ruby 管理工具
  13. Spring Cloud Eureka 注册中心 服务消费者 服务提供者之间的关系以及高可用之间的联系
  14. NSDictionary 和NSArray 排序(sort)
  15. Oracle Lock(Enqueues)
  16. leetcode Ch7-Graph Search
  17. python装饰器简单使用
  18. node中一个基本的HTTP客户端向本地的HTTP服务器发送数据
  19. [CLR via C#]值类型的装箱和拆箱
  20. TopCoder SRM 489 Div1 Lev3:AppleTree

热门文章

  1. xingo的demo部署
  2. 扫黑除恶Team第四次团队作业
  3. 动态规划----最长公共子序列(C++实现)
  4. 51node 1134 最长递增子序列 (数据结构)
  5. win10 专业版 安装tornado 的步骤
  6. jQuery的ready与js的load事件的区别
  7. winform ComboBox/TextBox自动提示
  8. vue中的表单验证
  9. SpringMVC参数接收
  10. iar修改包含路径的方法