
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、線段線段樹是建立段的基礎上,每個結點都代表了一條線段a , b。長度為 的線段成為元線段。非元線段都有兩個子結點,左結點代表的線段為aa + b ) / 2,右結點代表的線段為 ( a + b ) / 2 , b。右圖就是一棵長度范圍為1 , 10長度范圍為1 , L 的一棵線段樹的深度為 log ( L - 1 ) + 1。這個顯然,而且一棵線段樹的空間復雜度為 O(L)。線段樹支持最基本的操作為線段線段樹是建立段的基礎上,每個結點都代表了一條線段a , b。長度為 的線段成為元線段。非元線段都有兩個子結點,左結點代表的線段為aa + b ) / 2,右結點代表的線段為 ( a + b )
2、/ 2 , b。右圖就是一棵長度范圍為1 , 10長度范圍為1 , L 的一棵線段樹的深度為 log ( L - 1 ) + 1。這個顯然,而且一棵線段樹的空間復雜度為 O(L)。線段樹支持最基本的操作為和刪除一條線段。下面為例,詳細敘述,將一條線段a , 到代表線段l , r的結點 p 中,如果 p mid(lr)/2。如果 amid,那么將線段a , b 到 p 的右兒子結點中。(刪除)操作的時間復雜度為 O ( Log n )上面的都是些基本的線段樹結構,但只有這些并不能做什么,就好比一個程序有輸入沒輸出,根本沒有任何用處。最簡單的應用就是線段有否被覆蓋,并隨時查詢當前被覆蓋線段的總長度
3、。那么此時可以在結點結構中加入一個變量count蓋的線段長度和。這樣就要(刪除)當總值就是根節點的 count 值了。這個 count 另外也可以將 count 換成 bool cover;支持查找一個結點或線段是否被覆蓋。相信對算法設計或者數據結構有一定了解的人對線段樹都不會太陌生。它是能夠在 log(MaxLen)時間內完成線段的添加、刪除、查詢等操作。但一般的實現都有點復雜而線段樹應用中有一種是專門針對點的。(點樹?)它的實現卻非常簡單。先來考慮一下下面的需求(全部要求在 LogN 時間這種數據結構用?內完成):如何知道一個點在一個點集里的大小”?很簡單,開一個點數組,排個序,再二分查找
4、就行了;如何在一個點集內動態增刪點?也很簡單,弄個平衡樹就行了(本來平衡樹比線段樹復雜得多,但自從世界上有了 STL set這么個好東東,就_)那如果我既要動態增刪點,也要隨時查詢到一個點的可能就要出動到的“點樹”了。其實現原理很簡單:每當增加(或刪除)一個大小為 X 的點時,就在樹上添加(呢?那對不起,刪除)一條(X,MaxLen)的線段(不含端點),當要查詢一個點的時,只要看看其上有多少條線段就可以了。針對這一需求,這里有個非常簡單的實現(十多行,夠短了吧?)其中 clear()用于清空點集; add()用于添加一個點;cntLs()回小于 n 的點的個數,也就是 n ,類似地 cntGt
5、 。用呢?其中一個應用時在 O(NlogN)時間內求出一個排列的逆序這個點樹數(?=1484,你有更好的算法嗎?歡迎tGt(x);然后再 add(x)交流)方法是每讀到一個數 x,就讓逆序數這個實現還可以進行一些擴展。比如刪除 n),只要把 n)中的ize 換成-size,把 ai/2+改成 ai/2-即可。另外還可以通過二分查找功能在 N)時間內查到補充第 n 的點的大小。應該也可以三四行內搞定。同學在 2008年信息學奧賽冬令營上新發明了一種線段樹的省空間堆式法,具體方法可以見 08 年冬令營課件template 用呢?其中一個應用時在 O(NlogN)時間內求出一個排列的逆序這個點樹數(
6、?=1484,你有更好的算法嗎?歡迎tGt(x);然后再 add(x)交流)方法是每讀到一個數 x,就讓逆序數這個實現還可以進行一些擴展。比如刪除 n),只要把 n)中的ize 換成-size,把 ai/2+改成 ai/2-即可。另外還可以通過二分查找功能在 N)時間內查到補充第 n 的點的大小。應該也可以三四行內搞定。同學在 2008年信息學奧賽冬令營上新發明了一種線段樹的省空間堆式法,具體方法可以見 08 年冬令營課件template N / 表示可用區間為0,N)N 2 的冪數class PoTree a 2 * N;ifor clear() memset( this , 0 , siz
7、eof ( * this ); n) = N + n; + + a; i ; i /= 2 / 2 + if ( i & 1 ) i = for + 2統計小于; / 若統計小于等于則 )/ 2 if (i & 1 ) c += ai return c;n) return size - aN + n - void n)for(-an; n1; /*/* 解決:求點集中第 i 小的數(0 數起* 注意:如果 i=size N-if(na) else n-=a, return i-/if(na) else n-=a, return i-/T t;main()else cinreturn 另一種功能上比較類似的數據結構:“樹狀數組”。它們有不少相似之處:針對點集的處理(添加、刪除、查找);相似的時空復雜度(logN 時間,2N 空間相似的編程復雜度(都比
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 填埋廢棄水井施工方案
- 高分考生經驗分享試題及答案
- 跌倒墜床考試題及答案
- 2025年會計信息系統試題及答案
- 微生物實驗室質量控制的方法試題及答案
- 2025年案例分析綜合應用試題及答案
- 2024年項目管理理論的新發展試題及答案
- 項目計劃中資源使用的試題及答案
- 花藝師考試應試策略解析試題及答案
- 2025年注會備考期間時間分配建議試題及答案
- 2024年機場廣告行業投資分析及發展戰略研究咨詢報告
- 《洗地機培訓方案》課件
- 手術室護理新進展
- 2025年華僑港澳臺學生聯招考試英語試卷試題(含答案詳解)
- 《恙蟲病正式》課件
- 2025中國海油春季校園招聘筆試高頻重點提升(共500題)附帶答案詳解
- 微通道內納米流體傳熱流動特性
- 衛生院鄉村醫保培訓課件
- 微陣列技術在腫瘤標志物研究-洞察分析
- 2024至2030年中國氣力輸送系統行業投資前景及策略咨詢研究報告
- 初中數學52個經典母題
評論
0/150
提交評論