bzoj4764 彈飛大爺

2022-02-27 14:04:09 字數 1458 閱讀 5079

傳送門

你們搞的這個題目啊,exciting!……

lct裸題嘛。記得特判一下根節點所連出的邊是否會成環就行了,還有刪邊的時候特判一下是否需要把這條邊加回去。

幾天不寫lct,結果一寫就寫出各種腦殘錯誤,我怎麼這麼菜,233……

1 #include2 #include3 #include4

#define isroot(x) ((x)->p==null||((x)->p->ch[0]!=(x)&&(x)->p->ch[1]!=(x)))

5#define dir(x) ((x)==(x)->p->ch[1])

6using

namespace

std;

7const

int maxn=200010;8

struct

node

12 inline void refresh()

13 }null

[maxn];

14void newnode(node*);

15 node *access(node*);

16void link(node*,node*);

17void cut(node*);

18 node *getroot(node*);

19void splay(node*);

20void rot(node*,int

);21

intn,m,a[maxn],d,x;

22int

main()

31while(m--)

38else43}

44return0;

45}46 inline void newnode(node *x)

47 node *access(node *x)

55return

y;56}57

void link(node *x,node *y)63}

64void cut(node *x)78}

79}80 node *getroot(node *x)

86void splay(node *x)

92if(dir(x)==dir(x->p))rot(x->p->p,dir(x->p)^1

);93

else rot(x->p,dir(x)^1

);94 rot(x->p,dir(x)^1

);95}96

}97void rot(node *x,int

d)

view code

大力踩了一發標程,哈哈……(裝b

我能說這題我早就想出出來了嘛

……真是尷尬

= =看你們這麼會玩,我也想在bzoj上出題了233……(

這貨肯定會出毒瘤題報復社會

……

BZOJ4764 彈飛大爺

和彈飛綿羊類似的,那題是維護乙個內向樹,這題是維護若干棵基環內向樹和一棵內向樹 同樣的用lct維護就好了 內向樹可以直接維護,對於基環內向樹,隨便找環上一點x做根,記錄他指向哪個點to x 對於cut操作,不在環上可以直接斷,否則斷了之後要把x和to x 連起來 對於link操作,如果不成環同樣可以...

BZOJ 4764 彈飛大爺

time limit 30 sec memory limit 256 mb submit 39 solved 24 submit status discuss 自從wc退役以來,大爺是越來越懶惰了。為了幫助他活動筋骨,也是受到了彈飛綿羊一題的啟發,機房的小夥伴們 決定齊心合力構造乙個下面這樣的序列。...

BZOJ 4764 彈飛大爺 LCT

思路並不難,主要是細節需要注意一下.在 lct 中,刪邊要寫成 f lson 0,lson 0 因為刪 x y 時 y 不一定是左兒子,y 只是 x 的前驅 然後 f lson lson 0 這個寫法在一些編譯器上是錯誤的 就是你會發現 f lson 中這個 lson 會變成 0 因為那個錯誤 tl...