傳送門
你們搞的這個題目啊,exciting!……
lct裸題嘛。記得特判一下根節點所連出的邊是否會成環就行了,還有刪邊的時候特判一下是否需要把這條邊加回去。
幾天不寫lct,結果一寫就寫出各種腦殘錯誤,我怎麼這麼菜,233……
1 #include2 #include3 #include4view code#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)
大力踩了一發標程,哈哈……(裝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...