LCT总结

lct这东西一不用就忘了,,,所以在此整理下

lct维护边双联通分量

这类题通常是在一颗树上不停加边,然后询问双联通性。

做法:

我们用并查集维护每个点所属的联通分量,出现联通分量时我们暴力地把这些点缩起来, 并查集指向同一祖先。void del(int x,int rt) { if(!x) return ; fa[x]=rt; del(T[x].son[0],rt);del(T[x].son[1],rt); }
这样据说操作次数是nlogn的(不会证明),复杂度是对的。
同时我们缩完点后删除的点所连的虚子树的fa也发生了改变,这个我们在access是更新。x=T[x].fa=getfa(T[x].fa);

例题:

luogu 2542 [AHOI2005]航线规划
bzoj 星球联盟

关于lct中维护连通性

bzoj 2959: 长跑给的教训:
不要用一直走左儿子的方法来判断是否在一个联通块中,复杂度不对。
可以在splay中维护深度最浅的点,一种更优秀的方法是用并查集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值