L2 008 最長對稱子串(馬拉車模板)

2021-10-23 12:37:55 字數 1435 閱讀 4632

l2-008 最長對稱子串 (25分)

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定is pat&tap symmetric?,最長對稱子串為s pat&tap s,於是你應該輸出11。

輸入格式:

輸入在一行中給出長度不超過1000的非空字串。

輸出格式:

在一行中輸出最長對稱子串的長度。

輸入樣例:

is pat&tap symmetric?

輸出樣例:

11

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

const

int maxn =

1e3+10;

const

int inf =

0x3f3f3f3f

;const

int base =

131;

const ll inf =

1ll<<62;

//const double pi = acos(-1);

const

double eps =

1e-7

;const

int mod =

1e9+9;

#define mem(a,b) memset(a,b,sizeof(a))

#define speed

char str[maxn]

;//原字串

char change[maxn<<1]

;//轉換後的字串

int len[maxn<<1]

;//表示以字元tmp[i]為中心的最長回文串最右邊的那個到中心的距離

void

init

(char

*x)

change[

2*len+1]

='#'

; change[

2*len+2]

='$'

;//字串結尾加$字元,防止越界

}//馬拉車求最長回文串

intmanacher

(char

*x,int len)

res=

max(res,len[i]-1

);}return res;

}int

main()

L2 008 最長對稱子串

時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap s 於是你應該輸出11。輸入格式 輸入在一行...

L2 008 最長對稱子串

對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap s 於是你應該輸出11。對給定的字串,本題要求你輸出最長對稱子串的長度。例如,給定 is pat tap symmetric?最長對稱子串為 s pat tap ...

L2 008 最長對稱子串

原題 這道題可真是把我累的夠嗆,一開始是方法錯了,後來是題目定義不清晰理解錯誤,最後終於在第12次提交成功,廢話不說,總結如下 1.對稱,就是倒置之後還是不變,例如 aba 顛倒後還是 aba 所以思路就是,把原字串s1倒置過來,變成s2,然後求s1和s2最長公共子串 2.因為s1倒置過來變成s2,...