思路並不難,主要是細節需要注意一下.
在 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退役以來,大爺是越來越懶惰了。為了幫助他活動筋骨,也是受到了彈飛綿羊一題的啟發,機房的小夥伴們 決定齊心合力構造乙個下面這樣的序列。...