LCT高階操作 子樹查詢

2021-09-12 22:55:26 字數 948 閱讀 6582

具體的思想就是,我們的lct看似只能用splay維護鏈上的資訊,但是我們可以再開乙個陣列把虛兒子的資訊加到點上(如果可加的話),那麼一條鏈的總資訊就是這條鏈及其下面的虛兒子的總和,就是這條鏈的鏈頂的子樹和。如果我們access了乙個點,那麼這個點的所有虛兒子的和+他自己就是他的子樹和(因為下面沒有重兒子)。

模板題注意需要維護虛兒子資訊的只有access和link,因為access會執行到最上面,所以上面的所有點也會被相應的更新,而link不會,所以link時需要保證兩個點都是各自聯通塊的根。

ac code:

#include

#define maxn 100005

#define ll long long

using

namespace std;

int n,q;

namespace lct

il int

isr(

int x)

il voiddt(

int x)

} il void

dtpath

(int x)

il void

upd(

int x)

il void

rot(

int x)

il void

splay

(int x)

il int

access

(int x,

int y=0)

return y;

} il void

bert

(int x)

il void

link

(int x,

int y)

il ll query

(int x,

int y)

}int

main()

}

LCT維護操作。。

blog.csdn.net wu tongtong article details 78654635 lct基礎知識回顧 為了方便說話先說一下下面可能出現的名詞的意思 其實大家可以先跳過這一段,如果後面沒看懂我在寫什麼再回來看這裡 我們要用lct維護一棵樹,那麼這棵樹會有乙個原樹結構,以及乙個當前在...

bzoj 4530 大融合(LCT維護子樹資訊)

傳送門biu 用lct維護子樹資訊。lct維護子樹資訊 子樹資訊lct lct維護邊權 邊權lct 知識點講解 xsiz代表節點的虛兒子的size和。rsiz代表該點在splay中的size加上該點的xsiz。每次maintain操作可以更新節點的rsiz值。增加乙個update函式來實現實兒子到虛...

P4219大融合 LCT維護子樹資訊

給定 n nn個結點和 q qq 次操作,每個操作為如下形式 a xy a x y axy 在結點 x xx和y yy之間連線一條邊。q xy q x y qxy 給定一條已經存在的邊 x,y x,y x,y 求有多少條簡單路徑,其中包含邊 x,y x,y x,y 保證在任意時刻,圖的形態都是一棵森...