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
aaaaabab
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延伸。能延伸就說明是對稱...