1. 程式人生 > >點分治入門

點分治入門

引入

考慮比樹鏈剖分稍微簡單的情況,統計樹上具有某種特殊性質的路徑,而不發生修改。(這部分按道理來講應該接線上段樹/樹狀陣列/分塊之類的後面學才對啊)

一般來講這些樹都是無根樹。

對於一條鏈,可以取中間的一個點,把它劃分為兩個部分(分別屬於這個點的兩課不同子樹)。之後可以利用分治的方法對於每一棵樹都做這樣的分解,最後把所有子樹上滿足題意的路徑都統計到,就能夠得到答案了。但是在統計的過程中兩個節點有可能屬於同一棵子樹,便可能出現錯誤,所以還要統計在同一棵子樹上的情況,並把它們去掉。

例題

似乎用一道具體的題目會清楚一些?

poj1741 Tree 求一棵樹上長度不超過k的路徑有多少條。

利用剛才說的方法,把這棵樹劃分成多個子樹

---待更新