HDU 3068 最長回文

2021-08-10 15:48:57 字數 599 閱讀 2589

manacher演算法模板題,求字串的最長回文子串

#include#include#include#include#includeusing namespace std;

const int maxn=110010;

char str[maxn];//原字串

char tmp[maxn<<1];//轉換後的字串

int len[maxn<<1];

//轉換原始串

int init(char *st)

tmp[2*len+1]='#';

tmp[2*len+2]='$';//字串結尾加乙個字元,防止越界

tmp[2*len+3]=0;

return 2*len+1;//返回轉換字串的長度

}//manacher演算法計算過程

int manacher(char *st,int len)

ans=max(ans,len[i]);

}return ans-1;//返回len[i]中的最大值-1即為原串的最長回文子串額長度

}int main()

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 最長回文

problem description 給出乙個只由小寫英文本元a,b,c.y,z組成的字串s,求s中最長回文串的長度.回文就是正反讀都是一樣的字串,如aba,abba等 input 輸入有多組case,不超過120組,每組輸入為一行小寫英文本元a,b,c.y,z組成的字串s 兩組case之間由空行...