hdu3294Finding Palindromes

Posted yijiull

tags:

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

题目链接:http://poj.org/problem?id=3376

未解决!!!

下面代码明显会TLE-_-||

新的方法还不理解以后再看。

 1 #include<cstdio>
 2 #include<string>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 const int maxn=2001000;
 7 string s[maxn];
 8 string t;
 9 int r[2000010];
10 int ans;
11 void manacher(string s)
12 {
13 
14     int id=0,m=0;
15     int len=s.length();
16     for(int i=len;i>=0;i--)
17     {
18         s[i*2+2]=s[i];
19         s[i*2+1]=#;
20     }
21     s[0]=*;
22     for(int i=2;i<len*2+1;i++)
23     {
24         if(id+r[id]>i) r[i]=min(r[id*2-i],r[id]+id-i);
25         else r[i]=1;
26         while(s[i-r[i]]==s[i+r[i]]) r[i]++;
27         if(id+r[id]<i+r[i]) id=i;
28         if(m<r[id]) m=r[id];
29         if(m==len+1) {ans++;return ;}
30     }
31     return ;
32 }
33 int main()
34 {
35     int n;
36     //while(scanf("%d",&n)!=EOF)
37     scanf("%d",&n);
38     {
39         ans=0;
40         int x;
41         for(int i=0;i<n;i++){
42                 scanf("%d",&x);
43             cin>>s[i];
44         }
45         //二重循环,tle
46         for(int i=0;i<n;i++)
47             for(int j=0;j<n;j++)
48             {
49                 t="";
50                 t=s[i]+s[j];
51                 manacher(t);
52             }
53         printf("%d\n",ans);
54     }
55 }

 

以上是关于hdu3294Finding Palindromes的主要内容,如果未能解决你的问题,请参考以下文章

HDU 3294Life Forms

hdu3294Girls' research(manacher)

hdu3294Girls' research——manacher

HDU 3294 Girls' research Manaler算法

HDU3294 Girls' research

HDU3294 Girls&#39; research