P3805 模板manacher算法

Posted wstong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3805 模板manacher算法相关的知识,希望对你有一定的参考价值。

P3805 【模板】manacher算法

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn = 11000005;
 4 int n, len, ans;
 5 int r[maxn*2];
 6 char tmp[maxn], s[maxn*2];
 7 
 8 void init() {
 9     scanf("%s", tmp+1);
10     n = strlen(tmp+1);
11     s[0] = %;
12     for(int i = 1; i <= n; i++) {
13         s[++len] = #;
14         s[++len] = tmp[i];
15     }
16     s[++len] = #, s[len+1] = $;
17     return;
18 }
19 void manacher() {
20     int mx = 0, mid = 0;
21     for (int i = 1; i <= len; i++) {
22         if (i <= mx) r[i] = min(r[(mid*2)-i],mx-i);
23         while (s[i+r[i]+1] == s[i-r[i]-1]) ++r[i];
24         if (r[i]+i > mx) mx = i+r[i], mid = i;
25         if (r[i] > ans) ans = r[i];
26     }
27     return;
28 }
29 int main() {
30     init();
31     manacher();
32     printf("%d
",ans);
33     return 0;
34 }

 

以上是关于P3805 模板manacher算法的主要内容,如果未能解决你的问题,请参考以下文章

P3805 模板manacher算法

[洛谷P3805]模板manacher算法

P3805 模板manacher算法

洛谷P3805 [模板]Manacher算法 [manacher]

P3805 模板manacher 算法马拉车

字符串-Manacher算法(你知道马拉车算法吗?)