有兩個長度均為n的字串a和b。可以從a中選乙個可以為空的子串a[l1…r1],b中選乙個可以為空的子串b[l2…r2],滿足r1=l2,然後把它們拼起來(a[l1…r1]+b[l2…r2])。求用這樣的方法能得到的最長回文串的長度。注意:求的不是本質不同的回文串個數哦!!!
第一行乙個數n第二行表示字串a
第三行表示字串b
輸出一行乙個數表示答案分別對兩個字串進行manacher預處理,找到他們自身回文的p陣列
我們需要注意的r1=l2,即子串a和子串b的下標是連續遞增的,且子串a的最後乙個字元會被子串b的第乙個字元覆蓋,故匹配時,b字串需要-2,因為經過manacher預處理,中間多了個『#』字元,且我們可以以此字元的下標為中心,兩邊對稱的匹配字串,找到最大的回文串長度。
#pragma gcc optimize(2)
#include
#define ll long long
#define endl '\n'
using
namespace std;
vector<
int>p1,p2;
void
manacher
(string &t,vector<
int>
&p) t=s;
}int
main()
cout<}
牛客 最長回文
傳送門 有兩個長度均為n的字串a和b。可以從a中選乙個可以為空的子串a l1 r1 b中選乙個可以為空的子串b l2 r2 滿足r1 l2,然後把它們拼起來 a l1 r1 b l2 r2 求用這樣的方法能得到的最長回文串的長度。注意 求的不是本質不同的回文串個數哦!對兩個串分別跑manacher,...
牛客競賽 最長回文(馬拉車)
題目描述 有兩個長度均為n的字串a和b。可以從a中選乙個可以為空的子串a l1 r1 b中選乙個可以為空的子串b l2 r2 滿足r1 l2,然後把它們拼起來 a l1 r1 b l2 r2 求用這樣的方法能得到的最長回文串的長度。注意 求的不是本質不同的回文串個數哦!輸入描述 第一行乙個數n 第二...
牛客網最長回文子串(Python實現)
題目描述 對於乙個字串,請設計乙個高效演算法,計算其中最長回文子串的長度。給定字串a以及它的長度n,請返回最長回文子串的長度。測試樣例 abc1234321ab 12 返回 7 coding utf 8 class palindrome def getstr self,a,n 定義getstr方法求...