P4219大融合 LCT維護子樹資訊

2021-10-04 10:09:10 字數 1604 閱讀 8382

給定 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) 。

保證在任意時刻,圖的形態都是一棵森林。

該題簡單來說,也就是lct維護子樹資訊

因為最終的答案就是x

xx節點的子樹大小∗y*y

∗y節點子樹的大小

然而一般的lct都是維護鏈上資訊,那麼如何做到維護子樹資訊呢

我們用siz

1[x]

siz1[x]

siz1[x

]表示x

xx節點總的子樹和,siz

2[x]

siz2[x]

siz2[x

]表示x

xx節點的虛兒子的子樹和

然後對其進行維護,詳情參見**

#include

#define int long long

#define m 1000009

using

namespace std;

intread()

for(

;isdigit

(ch)

;ch=

getchar()

) re=

(re<<3)

+(re<<1)

+ch-

'0';

return re*f;

}int n,rev[m]

,c[m][2

],f[m]

,q[m]

,m,siz1[m]

,siz2[m]

;char s[20]

;void

pushup

(int x)

bool

root

(int x)

void

pushdown

(int x)

}void

rotate

(int x)

void

splay

(int x)

rotate

(x);

}pushup

(x);

}void

access

(int x)

void

makeroot

(int x)

void

split

(int x,

int y)

void

link

(int x,

int y)

//void cut(int x,int y)

//int findroot(int x)

signed

main()

return0;

}

洛谷 4219 BZOJ 4530 大融合

time limit 10 sec memory limit 256 mb submit 990 solved 604 submit status discuss 小強要在n個孤立的星球上建立起一套通訊系統。這套通訊系統就是連線n個點的乙個樹。這個樹的邊是一條一條新增上去的。在某個時刻,一條邊的負載...

BJOI2014 大融合 lct維護虛子樹大小

lct在動態連邊和刪邊方面比較有優勢,但是在維護子樹資訊方面又沒有樹鏈剖分那麼方便。這道題算是lct維護虛子樹資訊比較裸的一道題。以s陣列為總的子樹大小,sx陣列為虛子樹大小。要維護虛子樹資訊 在lct原來的模板上有三個地方需要改。pushup函式 總子樹大小顯然是實子樹大小 虛子樹大小 i pus...

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

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