【總結】動態樹


0BFS將無根樹轉化為有根樹。

1bef[x]=y。表示x的父親是y。這樣建樹構成了一片森林。

2、Access(x)。表示以x為起點,一直到根節點,構造出一條鏈。這條鏈用splay維護,可以很好的支持插入和刪除操作。這條鏈只有根節點與原樹有聯系。

3Splay(x)。同伸展樹,用於維護提取出的鏈。通過splay操作,使得均攤logn。

4MakeRoot(x)。表示把x節點設為根。一棵樹根的變化,僅與x到根的路徑有關,即把路徑反向即可。因此相當於把x到根的鏈翻轉,bef構成的森林不變。

 

 

 

A操作1:link,操作2:cut。

【HDU】2475 Box

 

 

B路徑中單點更新/成段更新/查詢。(其實這一大坨都可以用樹鏈剖分搞)

【SPOJ】375 Query on a tree

【FOJ】2082 過路費

【HYSBZ】1036 樹的統計Count

【URAL】1553 Caves and Tunnels

【CodeForces】191C Fools and Roads

【POJ】3237 Tree

【HDU】3966 Aragorn's Story

【POJ】2763 Housewife Wind

【SPOJ】913 Query on a tree II

【SPOJ】2798 Query on a tree again!

 

 

CA與B的結合。

【HYSBZ】2002 Bounce 彈飛綿羊

【HDU】4010 Query on The Trees


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM