manacher最长回文子串
生活随笔
收集整理的這篇文章主要介紹了
manacher最长回文子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://www.luogu.org/blog/codesonic/manacheralgorithm
先放上洛谷的鏈接,畢竟講的真好
兩道例題
luogu4555 SP7586
inline void change() {s[0]=s[1]='#';for(int i=0; i<n; i++) {s[i*2+2]=a[i];s[i*2+3]='#';}n=n*2+2;s[n]=0; } //替換新串 inline void manacher() {int maxright=0,mid;for(int i=1; i<n; i++) {if(i<maxright)hw[i]=min(hw[(mid<<1)-i],hw[mid]+mid-i);elsehw[i]=1;while(s[i+hw[i]]==s[i-hw[i]])++hw[i];if(hw[i]+i>maxright) {maxright=hw[i]+i;mid=i;}} }//主函數更新答案馬拉車算法
轉載于:https://www.cnblogs.com/asdic/p/9870279.html
總結
以上是生活随笔為你收集整理的manacher最长回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lintcode-828. 字模式
- 下一篇: return 返回值的问题