lg3950 部落衝突 (lct)

2021-08-20 15:09:56 字數 1117 閱讀 9224

lg3950

就是lct,維護一下連通性

維護相通性的時候,可以用並查集維護吧

但也可以通過找根操作來看是否聯通

如果x、y在一棵樹上,那麼x、y他們這棵樹不管怎麼轉,做左邊的點一定是一樣的

因此findroot時,找到最左邊的點,看是否一樣

inline

int findroot(int x)

這道題就是正常lct了…

#include 

#include

using

namespace

std;

#define n 300010

int cnt,n,m,ch[n][2],fa[n],rev[n];

char op[5];

struct nodea[n];

inline

bool isroot(int x)

inline

void rotate(int x)

inline

void pushdown(int x)

inline

void push(int x)

inline

void splay(int x)

if(ch[y][0]==x^ch[fa[y]][0]==y) rotate(x);

else rotate(y);rotate(x);

}}inline

void access(int x)

}inline

void makeroot(int x)

inline

void link(int x,int y)

inline

void cut(int x,int y)

inline

int findroot(int x)

inline

void query(int x,int y)

int main()

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

if(op[0]=='c')else link(a[x].x,a[x].y);

}return

0;}

洛谷P3950 部落衝突 LCT

題目傳送門 格式難調,體面就不放了。分析 julao們應該都看得出來就是個 lct 板子,戰爭就 cut 結束就 link 詢問就 find 沒了。太久沒打 lct 然後發現自己之前貌似理解得並不透徹,打得還是不熟。code it is made by holselee on 5th sep 201...

luogu P3950 部落衝突

題面傳送門 樹剖裸題,感覺難度虛高。當兩個部落開戰時,我們就把下面那個點的權值設為1 11,休戰則設為0 00即可。這樣有乙個好處就是查詢時如果有1 11可以直接跳出。其他基本操作。實現 include include using namespace std int n,m,k,f 600039 x...

P3950 部落衝突

此題用樹鏈剖分是大材小用了,因為它可以處理 p,q 不相鄰的情況。簡化一下題意 這都是一些樹上的操作,乍一看可以用樹剖直接搞。但是因為這裡是邊進行操作,所以我們可以以點代邊,把邊看做點。每一次查詢的時候 lca p,q 是不能算的。如果 p,q 不相鄰,我們可以加入樹剖的修改操作,但是線段樹的修改操...