複習資料 用到樹上差分思想的一類題目

2022-03-30 07:42:52 字數 1770 閱讀 6336

注:此處的樹上差分可能和某些樹上差分不太一樣。

一次考試考了這樣一道題目:

給出一棵有\(n\)個節點的樹,邊有長度,點有兩種顏色,一開始全是白色。

有兩個操作:

修改操作:給出乙個修改節點\(x\),將節點\(x\)染上黑色。

詢問操作:給出乙個詢問節點\(x\),記所有黑點形成的集合為\(s\),求\(\sum_f(dist(\operatorname(x,y)))\)。

函式\(f\)定義為:\(f(x)=\sum_^i^k\)(\(k\)為常數)。

其中\(1\le n\le 10^5,1\le k,時限\(2s\)。

首先考慮如何得到答案,可以設從點\(x\)到根的路徑經過的點依次為為\(x_1x_2x_3\dots x_y\),以它們為根的子樹包含的黑點數量為\(a_1a_2a_3\dots a_y\),那麼這次查詢的答案就是下面幾項的累加:

\[\begin(a_1-0)f(dist_)\\(a_2-a_1)f(dist_)\\(a_3-a_2)f(dist_)\\ \vdots \\(a_y-a_)f(dist_)\end

\]即:

\[\begina_1(f(dist_)-f(dist_))\\a_2(f(dist_)-f(dist_))\\ \vdots \\a_(f(dist_})-f(dist_))\\a_yf(dist_)\end

\]然後兩個\(f\)的差值是固定的,所以可以預處理出來。

對於修改操作,相當於是給點到根路徑上的所有點的權值加上乙個每個點特定的數。

對於詢問操作,相當於詢問點到根路徑上的所有點權值之和。

樹剖即可。

p4211 [lnoi2014]lca

首先,題目中的詢問\(\sum_^rdep[\operatorname(i,z)]\)可以拆成兩個詢問:

\[\sum_^rdep[\operatorname(i,z)]]-\sum_^ldep[\operatorname(i,z)]]

\]考慮離線處理,排序後,乙個乙個點地加入,同時在加入的過程中詢問。

p5305 [gxoi/gzoi2019]舊詞

上一題的弱化版?

k次方直接字首和處理。

考試題:

給定一棵\(n\)個節點的樹,邊有長度,兩種操作:修改邊權;查詢編號在\([l,r]\)之間的節點到節點\(x\)的路徑的長度和。

\[n\le 50000,m\le 50000

\]記節點\(x\)到根的距離為\(dist_x\),那麼:

\[dis(u,v)=dist_u+dist_v-2dist_(u,v)}

\]所以題目相當於要求:

\[(r-l+1)dist_x+\sum_^rdist_i-2\sum_^dist_(u,v)}

\]前兩個很好維護,如果忽略修改,最後乙個也可以排序後處理,所以關鍵是如何求出第三個式子。

前面的題目都沒有帶修改,考慮修改怎麼做,由於修改只有一條邊,所以可以直接找到線段樹上那條邊對應的節點修改就好了。

考慮將修改分塊,然後在每個塊內列舉1到\(n\)個點,然後再記錄乙個時間戳表示當前所在的詢問編號,對於某個查詢,直接將當前時間跳到當前詢問的時間戳位置,邊跳邊修改邊權。

若塊的數量為\(b\),節點數和運算元相當,所以時間複雜度就是\(o(bnlog_2^2n+n^2log_2n/b)\)。

p3241 [hnoi2015]開店

話說這樣題目中這個樹所有頂點的度數都小於或等於 3 這個條件就沒用了欸

感覺這類差分可能算是一種套路吧,所以把它寫了下來。

另:把分塊那題和可持久化線段樹那題套在一起,分塊加主席樹,又是一道好題(滑稽

VBA怎樣統計同一型別的資料的總和

今天是2014 11 01 是週末,忙了一周了,最終能夠閒下來了。想起近期工作用到的vba的乙個場景,結合vba的陣列,所以就想試試看。結果還好。出來了。這年頭,又玩起了vb了,經過多時才接受了vb的種語法風格,閒話不說,進入正題 比方如上的資料。我如今想統計出qqq所的總和是多少?ee的總和是多少...

使用者資料庫表狀態一類的問題

使用者狀態 if語句 禁用正常使用 ide格式化 alt shift f i方法 使用i函式進行變數獲取和過濾。i 變數型別.變數名 預設值 過濾方法 額外資料來源 注意 變數型別不區分大小寫。變數名則嚴格區分大小寫。預設值和過濾方法均屬於可選引數。我們以get變數型別為例,說明下i方法的使用 ec...

關於訂單一類 主從資料結構的更新問題

訂單主體 訂單單項 需求 訂單單項全部完成那麼訂單才算完成,訂單完成狀態標誌為變更。處理方法 某個訂單單項完成時,遍歷其他單項,看是否都完成,如果都完成那麼更新訂單主體上的標誌。缺點 擺明了效率問題,單項多了遍歷要花很長時間。在訂單肢體上設定計數器位置,當單項完成時察看標誌為的數值如果數值正好等於單...