就 基於大老們的部落格 研究了好久 才大概看明白 ( 然而並不明白能幹嘛-----------------
最開始看懂的
加了一分個人理解 /**/的是自己寫的 //是大老原來的
#include#include#include#define rint register int
#define inv inline void
#define ini inline int
#define maxn 1000050
using namespace std;
char s[maxn];
int y[maxn],x[maxn],c[maxn],sa[maxn],rk[maxn],height[maxn],wt[30];
int n,m;
inv get_sa()
//for (rint i=1; i<=n; ++i) putout(sa[i]),putchar(' ');
}inv get_height()
putchar(10);
}int main()
另乙個大佬的
這個就看了看高度陣列那一塊 反正是那一塊看懂了 這個就沒加注釋
inline void suffixarray()
if (unique) break;
}for (int i = 1, k = 0; i <= n; i++)
ht[rk[i]] = k;
}}
感覺還是不太理解 爭取以後自己寫乙個模板和部落格出來吧… 字尾陣列學習
字尾陣列sa是乙個一維陣列,它是將 s 的 n 個字尾從小到大進行排序之後把排好序的字尾的開頭位置順次放入 sa 中。比如 banana的所有字尾是banana,anana,nana,ana,na,a,按照字典序排列就是a,ana,anana,banana,na,nana,那麼字尾陣列就是。首先將單...
字尾陣列學習
參考 演算法入門經典 和rank 名次陣列 字尾i在所有字尾中從小到大排列的名次 以第k個字元開始的字尾稱為字尾k rank 0 n 1 有效 height height i suffix sa i 1 和suffix sa i 的最長公共字首,也就是排名相鄰的兩個字尾的最長公共字首。height ...
字尾陣列學習小結
這兩天學習了字尾陣列,感想是,果然字尾陣列比網路流可愛的多,就像字串比圖論可愛的多。有模板真好qvq。總結了一下字尾陣列的幾個要點 一.理解rank sa height三個陣列。分別代表所構成的字尾陣列str i 在程式裡並不表現出來 排名後的名次 排名後第i位是str中的哪乙個 str sa i ...