BZOJ2049 SDOI2008 洞穴堪測

2021-08-25 11:59:44 字數 1207 閱讀 1530

lct初學題。

注意兩個地方。

splay樹維護的是lct的資訊。莫將splay看成被維護資訊的樹。

如何link和cut?

link很簡單。

void link(int

x,int

y)

但是本人對cut操作一直有個困惑。

就是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開始,這些任務被分批加工...