左偏樹概述

2021-10-02 02:37:46 字數 764 閱讀 5417

參考

直接看ioi

ioiio

i國家集訓隊**就行了,講的很好。

補充結構體定義:

struct tree

tree[maxn]

;

其中val

valva

l代表該節點的值,dis

disdi

s代表距離,son

[0

]son[0]

son[0]

代表左兒子編號,son

[1

]son[1]

son[1]

代表右兒子編號,rtrt

rt代表該節點的根節點(即所在堆的堆頂)。

合併操作:

int

merge

(int x,

int y)

查節點x

xx的根節點:

int

father

(int x)

其實就是並查集的路徑壓縮。

刪除操作:

刪除根節點:(根據題目要求可自行修改)

inline

intdelete

(int x)

刪除某個節點:(考慮到了所有情況)

待補
修改某個點的鍵值:

刪除該點,然後修改值後再插入到左偏樹中即可。

左偏樹總結

既然新學了左偏樹,那我就來寫一些學了左偏樹之後的總結吧 首先,它支援的是兩個堆的合併過程。那麼最容易想到的是把乙個堆的元素全部彈出,乙個乙個加入另乙個堆中,就合併了。顯然這樣合併的複雜度是o n 的,再加上程式的其他部分,很慢。我們就考慮讓複雜度減小到o logn 很恐怖,沒錯,這就是左偏樹存在的意...

左偏樹 模板

神經病也可以寫成右偏樹 具體左偏指左節點的距離 geq 右節點的距離 距離指離最近擁有空節點的節點的距離 乙個節點的值一定 或 leq 或 geq 或 其子節點的值 由於左偏性質,每次可以合併至右邊,維護左偏性質後就可以保證複雜度 被踩爆的板子 或者是我?include define ls lson...

猴王 左偏樹

題目描述 很久很久以前,在乙個廣闊的森林裡,住著n只好鬥的猴子。起初,它們各幹各的,互相之間也不了解。但是這並不能避免猴子們之間的爭吵,當然,這只存在於兩個陌生猴子之間。當兩隻猴子爭論時,它們都會請自己最強壯的朋友來代表自己進行決鬥。顯然,決鬥之後,這兩隻猴子以及它們的朋友就互相了解了,這些猴子之間...