給定一個串 \(A\) 和一個串 \(B\)。問 \(B\) 的所有后綴和 \(A\) 的 \(lcp\)。 \(1 \le |A|,|B| \le 10^7\) 首先考慮解決一個簡單一點的問題:當 \(A=B\) 的時候的答案。 與 KMP 類似,我們需要求一個數組 \(nxt ...
這篇總結所有的字符串都是以 為下標起點 Z函數 ExKMP 對於一個字符串 S 我們規定一個函數 Z i 表示 S 與 S i...n 的 LCP 最長公共前綴 的長度。 即 S .....Z i 與 S i...i Z i 相等 先說構造 Z 函數,再說 Z 函數的應用 首先考慮暴力的構造 時間復雜度 O n 這就是一個根據定義的模擬,但是顯然 O n 的時間復雜度有些不太優秀,所以考慮優化: ...
2021-03-05 19:22 0 271 推薦指數:
給定一個串 \(A\) 和一個串 \(B\)。問 \(B\) 的所有后綴和 \(A\) 的 \(lcp\)。 \(1 \le |A|,|B| \le 10^7\) 首先考慮解決一個簡單一點的問題:當 \(A=B\) 的時候的答案。 與 KMP 類似,我們需要求一個數組 \(nxt ...
title: 前綴函數與KMP算法 date: 2020-08-05 tags: 算法 字符串 OI categories: 技術 因為大二的時候全程划水,導致我對KMP只聽說過名字。老師似乎都沒展開講,我記得是有一節下課時說這個算拓展內容,可以自己回去 ...
一個小約定:下文中的所有字符串下標都從 \(0\) 開始。 #1.0 什么是 Z-函數 對於一個長度為 \(n\) 的字符串 \(S\),定義函數 \(z(i)\) 表示 \(S[i,n-1]\),即以 \(S[i]\) 開頭的后綴,與 \(S\) 的最長相同前綴(\(\texttt ...
題面 洛谷P5410 【模板】擴展 KMP(Z 函數) 給定兩個字符串 \(a,b\),要求出兩個數組:\(b\) 的 \(z\) 函數數組 \(z\)、\(b\) 與 \(a\) 的每一個后綴的 LCP 長度數組 \(p\)。 數據范圍:\(1\le |a|,|b ...
積性函數前綴和-個人總結 【寫在前面】 用了一個多星期將這部分大致弄懂了,東西太多,有很多技巧,自己重新寫了一下,記錄自己的理解。內容與原文基本一致,在其基礎上加上了一些我感覺比較重要的但他沒有詳細說明的東西。以下都是我逐字打出來的。如果有什么錯誤,請指出。——Simon 前置技能里面 ...
今天軟院校賽,有一道H題非常的神,所以記下來。題意轉化了之后就是求歐拉函數的前綴和。自然的想法是O(n)的線性預處理可以求出前n個數的歐拉函數,又或者是O(sqrt(n))的預處理求出單個數的歐拉函數。但是題目要求的是前n(n<=10^9)個數歐拉函數的前綴和。於是我就覺得這是沒法 ...
KMP:在主串S中找子串T的位置KMP算法的時間復雜度O(|S|+|T|)。 1 2(來着算法競賽進階指南) 擴展KMP: 給定串S,和串T,設S的長度為n,T的長度為m,求T與S的每一個后綴(包括 ...
A[i]往前和B的前綴匹配的最大匹配長度,記為ex[i](或者說,ex[i]為滿足A[i-z+1..i] ...