字尾陣列各個變數含義

2021-09-14 05:18:25 字數 1400 閱讀 3333

sa[i] = j: 代表第i名的字尾是[j,n]

rank[i] = j: 代表字尾[i,n]是第j名。

height[i] = j:i名與第i-1名的lcp是j

詢問長度大於k的不同子串個數。

每個子串都是乙個字尾的字首,所以乙個字尾加入會貢獻出n-sa[i]+1個子串。

例如字尾aaabbc,貢獻的子串有aaabbc,aaabb,aaab,aaa,aa,a。扣除掉與前面重複出現的子串就是新貢獻的子串個數:n-sa[i]+1-height[i]。假設height[i]=1k=3height淘汰了a,但是aa也是不滿足的,所以對於長度大於k的,只需n-sa[i]+1-max(height[i],k-1)即可。

sa[i]下標從0開始

#include

#include

using

namespace std;

const

int n=

1e5+

100;

const

int m=

1e5+

100;

int wa[n]

,wb[n]

,wv[n]

,wss[m]

;string tr;

int r[n]

,sa[n]

;int

cmp(

int*r,

int a,

int b,

int l)

voidda(

int*r,

int*sa,

int n,

int m)

return;}

int rankk[n]

,height[n]

;void

calheight

(int

*r,int

*sa,

int n)

intmain()

Nginx的各個變數的含義

ngx http core module模組支援內建變數,他們的名字和apache的內建變數是一致的。首先是說明客戶請求title中的行,例如htt t,http cookie等等。此外還有其它的一些變數 args此變數與請求行中的引數相等 content length等於請求行的 content ...

lib字尾 a字尾的含義

當我們寫好乙個程式的時候,是以.c的字尾形式存在的,這個時候需要對.c進行編譯,轉成二進位制檔案,也就是生成在windows以.obj形式存在的,在linux下以.o形式存在的檔案,之後就需要進行鏈結,鏈結主要是鏈結函式和全域性變數,所以我們需要使用這些中間檔案,當你原始檔過多時,產生的中間檔案也是...

explain各個屬性含義

查詢的序列號 查詢的型別,主要是區別普通查詢和聯合查詢 子查詢之類的複雜查詢 輸出的行所引用的表 訪問型別 從左至右,效能由差到好 表示查詢時可能使用的索引。如果是空的,沒有相關的索引。這時要提高效能,可通過檢驗where子句,看是否引用某些字段,或者檢查字段不是適合索引 顯示mysql實際決定使用...