具體的思想就是,我們的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 保證在任意時刻,圖的形態都是一棵森...