1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 1089 最长回文子串 V2(Manacher算法) 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 1089 最长回文子串 ...
分类:
编程语言 时间:
2017-08-29 14:39:27
阅读次数:
141
求回文字符串最朴素的算法就是我们枚举一个中心点,然后看看该点能够向左向右延伸多远,这样的复杂度是O(n2) 当n很大的时候,我们是无法接受的。我们必须得去优化一下算法. 如何去优化呢? 对于每一个点,我们都是以半径为0开始不断比较。 这似乎显得我们之前已经处理的信息除了记录之外没有别的用途。 能优化 ...
分类:
编程语言 时间:
2017-08-16 20:31:03
阅读次数:
167
题目大意:给你一个字符串(长度≤11000000),叫你求这个串的最长回文子串长度。 解题思路:Manacher算法模板题,可以在$O(n)$的时间复杂度里求出一个串的最长回文子串。 不知道Manacher的见:http://www.cnblogs.com/Mrsrz/p/7308621.html ...
分类:
编程语言 时间:
2017-08-08 20:49:41
阅读次数:
203
Manacher 算法(http://www.jianshu.com/p/799bc53d4e3d) 对于一个比较长的字符串,O(n^2)的时间复杂度是难以接受的。Can we do better?先来看看解法2存在的缺陷。 1)由于回文串长度的奇偶性造成了不同性质的对称轴位置,解法2要对两种情况分 ...
分类:
编程语言 时间:
2017-08-07 13:52:19
阅读次数:
197
入门manacher最好文章:https://segmentfault.com/a/1190000003914228 我整理了模板代码:HDOJ3068马拉车模板 1 //讲解 https://segmentfault.com/a/1190000003914228 2 //manacher 算法模板 ...
分类:
编程语言 时间:
2017-08-05 22:52:15
阅读次数:
241
//给一个序列。让求其最大子序列 //这个序列由三段组成。第一段和第二段对称,第一段和第三段一样 //manacher算法求得p[i] //枚举第二段的起点和长度,得到结果 #include<cstdio> #include<cstring> #include<iostream> using nam ...
分类:
编程语言 时间:
2017-07-09 20:50:10
阅读次数:
224
參见hdu 3068 的manacher算法 代码例如以下: #include<stdio.h> #include<string.h> #define M 110010 int s[M],ss[M*2];//s代表原来的字符串,ss代表插入之后的字符串 int p[M*2]; //表示以i为中心的( ...
分类:
其他好文 时间:
2017-07-09 20:42:18
阅读次数:
163
以Hihocoder 1032为例。 manacher算法: 设一个数组p,p[i]表示以第i个字符为中心的最大半径,最大的p[i]就是最长的回文子串了。 不过这样要用两个循环,时间复杂度是(n*n)。 而manacher算法可以快速的求p[i],具体的可以参考这里。 AC代码: ...
分类:
编程语言 时间:
2017-07-06 20:48:23
阅读次数:
247
/*首先呢,手动@一下逸安dalao。前几天一是考试没时间,再就是这个算法我只是懂,没写过题所以不敢写一个专题博客。 终于抽出时间写一下这个noip基本不会涉及的算法啦*/ 首先我们知道回文的定义:正反读都是一样的字符串叫做回文串。如:madam,lol,oppo,zz,甚至连单字符都可以被称为回文 ...
分类:
编程语言 时间:
2017-07-02 16:14:47
阅读次数:
231
hdu:3068 #include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>using namespace std;int min(int a,int b){ return a<b?a:b;}char s[ ...
分类:
编程语言 时间:
2017-06-27 08:11:58
阅读次数:
145