LCT
ACTerminate
这个作者很懒,什么都没留下…
展开
-
LCT模板(link-cut-tree)
#include<stdio.h> #include<algorithm> #define N 200005 using namespace std; //struct stp{int x,y,a,b;}a[N]; //bool cmp(stp a,stp b){return a.a<b.a;} int rev[N],mx[N],ch[N][...原创 2017-08-02 13:47:19 · 434 阅读 · 0 评论 -
bzoj2049 [Sdoi2008]Cave 洞穴勘测 [LCT]
题意:给你一颗树,n个节点m个询问,询问包含①加一条边②摧毁一条边③询问X,Y是否连通。题解:LCT模板题,link加边,cut删边,询问的时候先make_root(u),然后access(v),这时候若u和v在一棵树上,则在同一颗splay中。AC代码:#include<stdio.h> #include<algorithm> #defi...原创 2017-08-06 14:50:15 · 380 阅读 · 0 评论 -
BZOJ 2002 [HNOI2010] 弹飞绵羊 [LCT]
题意:给你n个数,表示位置i能跳到位置i+a[i],每次有两种操作①询问位置x需要跳几步能跳出n②修改一个位置的跳的长度题解:LCT模板题,由于i可以跳到a[i]+i,所以我们将i的父亲设置为a[i]+i,这样当我们更新的时候只需要cut(i,a[i]+i),然后link(i,i+y),就完成了修改,每次询问的时候我们将n+1这个尾节点设置为当前辅助树的根节点,然后access(x...原创 2017-08-02 13:45:09 · 697 阅读 · 0 评论 -
BZOJ 4530 [Bjoi2014]大融合 [LCT]
题意:给n个相互独立的点,每次有两个操作:①将x连接y②询问经过边[x,y]的简单路径有几条注意:题目保证图始终是森林。题解:通过题目我们可以知道,边[x,y]的简单路径的数目是边两边点数相乘,由于涉及到连接操作,我们可以考虑用LCT维护子树的节点的数量。由于通常的LCT模板维护的是splay(辅助树)上的情况。所以我们需要记录两个值:一个是虚边连接的子树的大小(不在一个splay...原创 2017-09-06 20:55:44 · 395 阅读 · 0 评论 -
HDU 6200 mustedge mustedge mustedge [LCT+缩点]
题意:给你n个点m条边,有q个操作:①u和v之间加入一条边;②询问u和v之间的桥的个数;题解:刚刚开始的时候还以为需要边化点,后来发现其实只要记录bcc分量的个数减一就是桥的个数(因为是棵树= =),这样我们就可以通过LCT维护bcc,然后通过缩点减少复杂度和计算答案。(这里T了好久)首先对于新加入的边,我们make_root(u);access(v);splay(v);得到这个环...原创 2017-09-13 23:14:39 · 585 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 An Easy Problem On The Trees [LCT]
题意给你n个节点的一颗树,m个操作,操作有三种: 1. 连接a与b。 2. 以x为根节点,将b与其父节点连接的边删除。 3. 询问从x开始最后走回x的期望步数(每条边等概率移动)。题解对于询问3可以推出一个结论,期望的步数是2*(size(x)-1)/du(x),通过这个结论我们只需要用LCT维护子树大小即可。AC代码#include&amp;lt;stdio.h&amp;gt;#...原创 2018-09-02 17:10:48 · 449 阅读 · 0 评论