动态树
DOFYPXY
这个作者很懒,什么都没留下…
展开
-
[2017纪中10-28]图 最小生成树+LCT
题面 把图分成正图(k+x)和负图(k-x),且称正树为正图中的最小生成树,负树为负图中的最小生成树。 有个很明显的结论是,无论 x 的值是多少,最后的最小生成树的边一定是正图中的最小生成树上的边或负图的最小生成树上的边(因为正图和负图都是联通图)。 当 x 趋近于无穷小的时候,正树就是图的最小生成树,当 x 逐渐增大,负树中的边会逐渐取代正树中的边(但不一定按照从小到大顺序取代),例如样例。原创 2017-10-30 07:59:22 · 480 阅读 · 0 评论 -
[BZOJ2843]极地旅行社 LCT模板
半年没打LCT,够呛。。。 这题没有cut? 容易错的地方: 1. rotate(x)时最后确定x应是其父亲左儿子还是右儿子时,有可能它要成为splay的根,所以else后面还要if,(这里比较特殊还不能用isroot判 2. splay双旋时应该先下放祖父再下放父亲。 3. 不仅是access,凡是要用到左右儿子且左右儿子有区分是务必要pushdown,更改了儿子信息务必要update原创 2018-01-17 22:49:13 · 304 阅读 · 0 评论 -
[BZOJ2959]长跑 LCT+双联通分量+并查集
首先在一个边双联通分量中所有点的贡献是都可以算入的。但是因为有加边操作,考虑用LCT来维护缩边双之后的树。 若一次连接的(x,y)(x,y)在同一棵树上,就把xx到yy的路径提出来,缩成一个点。这可能会导致其他某些点的父亲标号改变,所以调用父亲之前一定要用并查集更新一下。 然后因为只有加边,判断在不在一棵树上最好也用并查集,用找根操作常数略大。 代码: #include #includ原创 2018-01-18 20:21:11 · 346 阅读 · 0 评论 -
[BZOJ3669][NOI2014]魔法森林 LCT
把边按权值aaa从小到大插入,并维护权值bbb的最小生成树。具体地,如果link的一条边的两个端点已经联通,那么把这两个点路径上bbb最大的边cut掉。最后用111到nnn路径上bbb的最小值加上当前aaa更新答案。 注意到边权不太好维护,可以把每条边重开一个点,向两个端点连边。 代码: #include<iostream> #include<cstdio> #inc...原创 2018-05-04 21:33:44 · 206 阅读 · 0 评论