摘要:
字符串模式匹配(一)——單模匹配(KMP) 單模匹配的常用算法為KMP,多模匹配常用算法為AC自動機。 暴力匹配法(BF, O ( ∣ S ∣ × ∣ T ∣ ) O(|S|\times |T|) O(∣S∣×∣T∣)) 設(shè)源串 S S S的匹配指針為 i i i,模式串 T T T的匹配指針為 j 閱讀全文
摘要:
線段樹 模板題:線段樹1-洛谷(代碼) 線段樹是一種平衡二叉樹,其核心思想為二分+分治+懶標記,可在 O ( log ? 2 n ) O(\log_2n) O(log2?n)的復(fù)雜度內(nèi)完成單點修改、區(qū)間修改、區(qū)間查詢等操作。 設(shè)原序列長度為 n n n,則每個節(jié)點 i d ( 1 ≤ i d ≤ 4 閱讀全文
摘要:
字符串基礎(chǔ)概念 字符串:簡稱串,是由字符組成的有限序列。串中所包含的字符個數(shù)為串長,串長為0的串為空串。串長與所有對應(yīng)位置字符都相同的串為相等串,空串一定為相等串。子串、子序列:設(shè)從原串 S S S某一位置開始,若以連續(xù)順序取 S S S中若干長度的字符,所組成的新串 S ′ S' S′即為 S S 閱讀全文
摘要:
Johnson 本質(zhì):SPFA+Dijkstra特點:多源最短路適用對象:允許負權(quán)圖,不允許負環(huán)圖(負環(huán):圖上邊權(quán)之和為負的環(huán),負環(huán)圖無法求解最短路)存儲結(jié)構(gòu):鏈式前向星核心思想:先使用SPFA/Bellman-Ford計算潛在值,將所有邊的權(quán)值調(diào)整為非負,再對每個頂點使用Dijkstra算法流程: 閱讀全文
摘要:
最短路計數(shù) 算法流程:在最短路算法中另設(shè)置一個 d p dp dp數(shù)組用于計數(shù)最短路,并將源點的 d p [ S ] = 1 dp[S]=1 dp[S]=1。在松弛操作時: if(dis[V]==dis[U]+W) dp[V]+=dp[U]; if(dis[V]>dis[U]+W){ dis[V]= 閱讀全文
摘要:
倍增 倍增是與二分相反的算法,其核心思想是每次擴大一倍,以 2 n 2^n 2n的速度極大擴展空間 原理:任意整數(shù)均可被分解為若干個以2為底的冪項和。最經(jīng)典的倍增是 2 i 2^i 2i(實際應(yīng)為 e i e^i ei) 流程:定義倍增表 g [ i ] [ j ] g[i][j] g[i][j], 閱讀全文