HDU 3068 最長回文

2021-06-18 17:40:40 字數 877 閱讀 5641

problem description

給出乙個只由小寫英文本元a,b,c...y,z組成的字串s,求s中最長回文串的長度.

回文就是正反讀都是一樣的字串,如aba, abba等

input

輸入有多組case,不超過120組,每組輸入為一行小寫英文本元a,b,c...y,z組成的字串s

兩組case之間由空行隔開(該空行不用處理)

字串長度len <= 110000

output

每一行乙個整數x,對應一組case,表示該組case的字串中所包含的最長回文長度.

sample input

aaaa

abab

sample output

43  

關於最長回文串問題,可以參考:

#include#include#includeusing namespace std;

#define max 110010 * 2

char init[max]; //輸入原始字串

char result[max]; //加入『#』後的字串

int p[max];

int n; //the length of result;

void pre() }}

int main()

printf("%d\n",t-1);

} return 0;

}

HDU 3068 最長回文

題 目 鏈 接 看完後自己寫了一遍,感覺真的是很神奇的結論啊!本來這題看到可以用字尾陣列來寫的,但沒有學過,去看了一下,真心給暈了,決定找個機會認真研究下。我的 include include includeusing namespace std define min a,b a b a b cha...

HDU 3068 最長回文

存在o n 的演算法,學習了一下 include include includeusing namespace std const int maxn 300011 int n,p maxn char str maxn in maxn int main str 0 str 1 n n 2 2 str ...

hdu 3068 最長回文

核心思路 rad i min rad 2 id i maxid i 其實很好理解,也就是假設你在id這個點匹配到maxid都是回文的。然後你現在搜尋的這個點i不超過maxid。那麼i關於id的對稱點2 id i 一定在id左邊。然後其實就是對稱點向左邊延伸,i向右邊maxid延伸。能延伸就說明是對稱...