簡單複習一下Manacher演算法(求最長回文子串)

2021-08-31 07:09:02 字數 660 閱讀 1717

對於串abc

dcbc

abcdcbc

abcdcb

c,我們在每兩個字元之間新增其他字元#

\##得到a#b

#c#d

#b#c

#d

a\#b\#c\#d\#b\#c\#d

a#b#c#

d#b#

c#d

p [i

]p[i]

p[i]

表示並且i

ii為回文中心並且回文半徑為p[i

]p[i]

p[i]

。我們考慮求這個東西。

m ax

pmaxp

maxp

表示當前回文串的最右邊的位置,mid

midmi

d表示max

pmaxp

maxp

所對應的回文中心,然後遞推求解。

#include using namespace std;

const int n=11000005;

char a[n],s[n<<1];

int n,mid,ans,maxp,p[n<<1];

void manacher()

}int main()

簡單複習一下KMP演算法(模式匹配)

kmp演算法用來做什麼 1 n a 1,n a 1,n 是否為字串b 1 m b 1,m b 1,m 的子串,並求出a aa在b bb中各次出現的位置。關於雜湊求解 由於雜湊代替各種字串的做法比較固定,此處不做介紹。kmp演算法的小複習 f ai l i fail i fail i 表示 a aa中...

複習一下 列表

列表的內建方法 l l.insert 0,88 在0這個位置上插入88值 l.l.extend x,y 把乙個列表中的多個值放進去 l 列表 l.remove 值 l.pop 索引 刪除索引位置的值 l.claer 列表清空 del lst 1 3 l.pop 刪除最後乙個數 lst.sort 排序...

來,複習一下,基礎執行緒

什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。什麼是多執行緒...