1. 程式人生 > >[學習筆記]圓方樹

[學習筆記]圓方樹

由於 圓點 大堆 分類討論 ace 可能 detail 成了 基本

圓方樹:元芳你怎麽看

圓方樹推薦

圓方樹是什麽?

Tarjan家族中,最不好處理的是點雙

因為一個割點可能屬於很多的DCC。

為了把圖縮成一棵樹,我們不得不做出這樣的處理:

摘自:https://blog.csdn.net/qq_39670434/article/details/81973923

技術分享圖片

這個樹不但醜。而且,對於一個點雙內部的信息,我們把它縮成了一個點,內部的與非割點有關的路徑我們一無所知。

所以這個玩意只能用來維護連通性。。。。以及簡單的問題。

而且要分類討論一大堆。,。。。

然後,圓方樹橫空出世。

摘自yyb博客

技術分享圖片

這樣,我們

既保留了整體上樹的優美結構,又可以保留所有的原始節點。

利用圓點和方點之間的邊來存儲信息,就可以比較輕松處理具體點雙內部的路徑了。

圓方樹是處理仙人掌問題的。

處理仙人掌問題還有一個方法:dfs樹。

我們發現一個仙人掌無非就是多了幾個環。

那麽找一個dfs樹出來,就是多了幾個返祖邊。

dp的時候照顧一下就好了。

例如把環直接拉出來,或者多加一維記錄環頂的信息 。

[SHOI2008]仙人掌圖 II——樹形dp與環形處理

但是這個東西的低級之處在於,

基本上我們只能搜索一次,對於重復靈活查詢,例如最短路徑的問題,就無能為力了。惡心之處就是環的問題。

(可能用什麽暴力高級數據結構維護也許可以)

圓方樹就簡單很多了。

一般就分方點原點討論一下。

關鍵在於怎麽處理圓——方邊,以及方點維護哪些信息。

由於圓方樹比較優秀,

它還可以用於一般的圖。

總之:

既保留了整體上樹的優美結構,又可以保留所有的原始節點。

利用圓點和方點之間的邊來存儲信息,就可以比較輕松處理具體點雙內部的路徑了。

[學習筆記]圓方樹