BZOJ 4764 彈飛大爺 LCT

2021-10-01 12:51:40 字數 956 閱讀 9327

思路並不難,主要是細節需要注意一下. 

在 lct 中,刪邊要寫成:f[lson]=0,lson=0 (因為刪 x->y 時 y 不一定是左兒子,y 只是 x 的前驅)  

然後 f[lson]=lson=0 這個寫法在一些編譯器上是錯誤的(就是你會發現 f[lson] 中這個 lson 會變成 0 )

因為那個錯誤 tle 了半天 ~ 

code: 

#include #include #define n 200006   

#define lson t[x].ch[0]

#define rson t[x].ch[1]

#define setio(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout)

using namespace std;

struct node

t[n];

inline int get(int x)

inline int isrt(int x)

inline void pushup(int x)

inline void rotate(int x)

inline void splay(int x)

}}

void access(int x)

}

int find(int x)

// 所有邊都是有向的(x->y)

void link(int x,int y)

} void cut(int x,int y)

} }

int val[n];

int main()

for(i=1;i<=m;++i)

if(op==2)

}return 0;

}

BZOJ4764 彈飛大爺

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

bzoj4764 彈飛大爺

傳送門 你們搞的這個題目啊,exciting!lct裸題嘛。記得特判一下根節點所連出的邊是否會成環就行了,還有刪邊的時候特判一下是否需要把這條邊加回去。幾天不寫lct,結果一寫就寫出各種腦殘錯誤,我怎麼這麼菜,233 1 include2 include3 include4 define isroo...

BZOJ 4764 彈飛大爺

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