2018 4 5課堂筆記

2022-05-18 05:17:59 字數 1568 閱讀 5636

【trie樹】

trie樹

存在的問題

1.空間大

不能用陣列存(一般)

如果字母表特別特別大

(1.鄰接表+hash

(2.平衡樹存字母表

2.縮編加速

a->b->c->d----》a->bcd

【字尾樹】

用tre來實現kmp的功能

把文字串的所有字尾建乙個trie樹

--》字尾樹

兩個字尾的最長公共字首

就是字尾樹(trie樹)中對應葉子節點的lca

字尾陣列,

把字尾陣列放在那,從左往右看每個葉子節點的編號所構成的陣列,就是字尾陣列

笛卡爾樹

從字尾數組建字尾樹

字尾陣列實際上就是將所有字尾按字典序排序

如何快速的講兩個字尾陣列排序?

用倍增演算法。

因為很有可能出現大量重複。

我們可以很輕鬆的用桶給單個字元排序

那麼同樣,我也可以通過已經排好序的單個字元,給長度為二的字串排序,

長度為4,長度為8的。。。同理

所以時間複雜度是o(nlogn)

這個時間實際上是非常快的

字尾陣列的應用

(1 求某兩個字尾陣列的最長公共字首

sa表示字尾陣列(已經排好序的)

例 :abcabd

sa=1 abcabd

4 abd

2 bcabd

5 bd

3 cabd

6 dhight[n]=sa[n-1]和sa[n+1]的最長公共1字首

某兩個字尾的最長公共字首,等於這兩個字尾在字尾陣列裡的排名中間所有的hight的最小值

如何求hight?

h表示每乙個字尾最多能匹配多少位

證明:h[i+1]>=h[i]-1;

h[i]<=1;一定成立

h[i]>1

h[i]=hifht[rank[i]]

【整理】

sa每乙個字尾的編號

排序後的sa值存進陣列

rank第i個數對應的對應字尾陣列中的哪個數

heght相鄰兩個字尾陣列中的字尾的最長公共字首

有乙個性質:lca(i,j)=rmq(height[rand[i+1],height[rand[j]),求區間最小值

利用這個性質求出任意字尾的最長公共字首

【概率與期望】p(e)

事件e什麼情況會出現在你的事件裡

隨機變數x

x=a1,a2,a3,.....,an

p(x)=ai;

期望平均的取值就是期望

ex=sigma pi ai  (i=1......n)

方差=e(x-ex)^2

dv[x]=1;

期望的線性性

e(x+y)=ex+ey 

期望的獨立性

x=x1....xn  y=y1......yn

p(x=xi,y=yi)=p(x=xi)p(y=yi)

在獨立性的前提下

e(x*y)=ex*ey 

注:只有在獨立的情況下乘法才能滿足線性 

9 1課堂筆記

課堂筆記 一 1 file類的構造方法 public file string pathname 根據parent抽象的路徑名和child路徑名字串建立乙個新的file物件。pathname指路徑名字串,parent父抽象路徑名 父抽象路徑名既可以是字串,也可以是file物件 public file ...

9 7課堂筆記

課堂筆記 執行緒的同步 為什麼需要 執行緒同步 執行緒間共享 和資料可以節省系統開銷,提高程式執行效率,但同時也導致了資料的 訪問衝突 問題,如何實現執行緒間的有機互動 並確保共享資源在某些關鍵時段只能被乙個執行緒訪問,即所謂的 執行緒同步 synchronization 就變得至關重要。臨界資源 ...

2018 3 8課堂筆記

選擇器的優先級別可以如下方式計算 a 行內樣式權重1000,b id選擇器權重100 c 類 偽類和屬性選擇器權重10,d 標籤選擇器和偽元素選擇器權重為1 對於網頁中背景的修改 都是以background開頭的,例如 background position背景的定位 background size...