HDU 5340-Three Palindromes(Manacher算法)
題意:問是否能將字符串str分解為三段非空的回文串。
思路:我們根據Manacher算法對字符串進行處理,處理過程中產生的P數組,我們可以得到兩個數組first和last。
first存儲的是第一個回文串的半徑可能值。
last存儲的是第三個回文串的半徑可能值。
根據first和last我們可以枚舉第一個回文串和第三個回文串,然後根據半徑找出第二個回文串的初始位置和結束位置。然後計算出第二個回文串的中點:
1.如果ll>rr,則第二個字符串的長度為負數,pass
2.如果p[mid]=1,說明第二個回文串為”#”,相當於空,pass
3.如果三個子字符串的長度加起來大於len,證明符合長度,跳出來即可。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include