對於串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 排序...
來,複習一下,基礎執行緒
什麼是程序?當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。什麼是執行緒?執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。什麼是多執行緒...