lct初學題。
注意兩個地方。
splay樹維護的是lct的資訊。莫將splay看成被維護資訊的樹。
如何link和cut?
link很簡單。
但是本人對cut操作一直有個困惑。void link(int
x,int
y)
就是lct中沒有這條邊怎麼辦?
需要特判。
詳見我的部落格:lct學習之旅
reverse標記記得實時傳。
#include
#include
#include
#include
#include
#define n 10010
#define m 200010
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
struct notequ[m];
struct lcttr[n];
int i,j,k,l,n,m;
int cnt,gs,tot,a[m*2],b[m*2];
char ch;
int swap(int &x,int &y)
void init()else
if(ch=='d')else
}}void lsh()
}bool isroot(int
x)int dir(int
x)void pushrev(int
x)void pdw(intx)}
void rotate(int
x)void splay(int
x) rotate(x);
}}void access(intx)}
void mroot(int
x)int groot(int
x) return w;
}void link(int
x,int
y)bool judge(int
x,int
y) return
x==y;
}void cut(int
x,inty)}
void operate()else
if(qu[i].op==1)else
}}int main()
BZOJ2049 SDOI2008 洞穴勘測
description 輝輝熱衷於洞穴勘測。某天,他按照地圖來到了一片被標記為jszx的洞穴群地區。經過初步勘測,輝輝發現這片區域由n個洞穴 分別編號為1到n 以及若干通道組成,並且每條通道連線了恰好兩個洞穴。假如兩個洞穴可以通過一條或者多條通道按一定順序連線起來,那麼這兩個洞穴就是連通的,按順序連...
BZOJ2049 洞穴勘測(LCT)
太長也懶得複製了 題目大意就是 給你n個點,這n個點一開始沒有路徑相連,然後給出m個操作,包含三個操作 1.query x,y 詢問x,y之間是否連通。2.connect x,y 在x,y之間連一條邊。3.destroy x,y 將x,y之間的邊刪除。最後對於每個query,如果連通就輸出 yes ...
Bzoj 2726 SDOI 任務安排
memory limit 131072kb 64bit io format lld llu description 機器上有n個需要處理的任務,它們構成了乙個序列。這些任務被標號為1到n,因此序列的排列為1,2,3.n。這n個任務被分成若干批,每批包含相鄰的若干任務。從時刻0開始,這些任務被分批加工...