码迷,mamicode.com
首页 > 其他好文 > 详细

POJ3974 (manacher)

时间:2015-05-18 18:19:35      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

 1 var s,t:ansistring;
 2     n,op:longint;
 3     p:array[0..2000008] of longint;
 4 procedure pre;
 5 var i:longint;
 6 begin
 7     s:=$*;
 8     for i:=1 to length(t) do
 9     begin
10         s:=s+t[i]+*;
11     end;
12     s:=s+#;
13     n:=length(s);
14 end;
15 function min(a,b:longint):longint;
16 begin
17     if a<b then exit(a) else exit(b);
18 end;
19 procedure manacher;
20 var i,mx,id:longint;
21 begin
22     fillchar(p,sizeof(p),0);
23     mx:=0; id:=1; p[1]:=1;
24     for i:=2 to n do
25     begin
26         p[i]:=1;
27         if mx>i then p[i]:=min(mx-i,p[id*2-i]);
28         while s[i+p[i]]=s[i-p[i]] do inc(p[i]);
29         if p[i]+i>mx then begin mx:=p[i]+i; id:=i; end;    
30     end;
31 end;    
32 procedure print;
33 var ans,i:longint;
34 begin
35     //writeln(s);
36     ans:=0;
37     for i:=1 to n do if p[i]-1>ans then ans:=p[i]-1;
38     writeln(Case ,op,: ,ans);
39 end;    
40 begin    
41     op:=0;
42     while true do
43     begin
44         inc(op);
45         t:=‘‘;
46         readln(t);
47         if t=END then break;
48         pre;
49         manacher;
50         print;
51     end;
52 end.

 

POJ3974 (manacher)

标签:

原文地址:http://www.cnblogs.com/rpSebastian/p/4512502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!