
动态树
lsr_yali
中国人寿,你值得拥有
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
bzoj2002 LCT
LCT模板题 #include #include #include #include #define For(i,j,k) for(register int i=(j);i<=(int)k;i++) #define Forr(i,j,k) for(register int i=(j);i>=(int)k;i--) #define L(i) (T[(i)].s[0]) #define R(i) (原创 2016-12-17 10:42:57 · 359 阅读 · 0 评论 -
LCT小结
各种操作1.isrt(x) 判断x是否为当前辅助树的根 inline bool isrt(int x){ return R(F(x))!=x&&L(F(x))!=x; }2.pushup(x) 合并答案更新 //举例 inline void pushup(int i){ T[i].mx=max(T[L(i)].mx,T[R(i)].mx);原创 2017-02-12 21:43:15 · 699 阅读 · 0 评论 -
BZOJ2594: [Wc2006]水管局长数据加强版
题意动态维护最小生成树上最大边题解这题有点恶心,还要写一个hash因为最小生成树具有环切性质,所以LCT维护一下就可以了代码#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<iostream> #include<map> #define L(i) (T[i].s[0]) #define原创 2017-02-12 10:24:20 · 365 阅读 · 0 评论 -
BZOJ3091: 城市旅行
题意维护树上两点路径上任意两点的距离的期望值题解搬运一波PoPoQQQ大神的博客 http://blog.youkuaiyun.com/popoqqq/article/details/40823659代码#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #define F(i)原创 2017-02-12 10:11:53 · 277 阅读 · 0 评论 -
SPOJGSS7 Can you answer these queries VII
题意树上最大连续子段和题解维护前后缀和总的最大连续子段和 合并即可代码#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #define L(i) (T[i].s[0]) #define R(i) (T[i].s[1]) #define F(i) (T[i].fa) #define S(i) (T[i].原创 2017-02-12 10:00:35 · 297 阅读 · 0 评论 -
BZOJ2243 染色
题意:给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“ 112221 ” 由3段组成:“ 11 ” 、“ 222 ” 和“ 1 ” 。请你写一个程序依次完成这m个操作。题解LCT维护最左/右端点颜色合并即可代码#include<cstdio> #include<cstdlib>原创 2017-02-12 09:57:40 · 538 阅读 · 0 评论 -
BZOJ1095 捉迷藏
类似QTREE4LCT维护子树信息即可代码#include<bits/stdc++.h> #define For(i,j,k) for(int i=(j);i<=(int)k;i++) #define Forr(i,j,k) for(int i=(j);i>=(int)k;i--) #define Set(a,b) memset(a,b,sizeof(a)) #define Rep(i,u) for原创 2017-02-12 09:49:15 · 457 阅读 · 0 评论 -
URAL1553 Caves and Tunnels
LCT模板题代码#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #define L(i) (T[i].s[0]) #define R(i) (T[i].s[1]) #define F(i) (T[i].fa) #define Loc(i) (R(F(i))==i)原创 2017-02-12 09:46:05 · 252 阅读 · 0 评论 -
HDU4010 Query on The Trees LCT
LCT模板题代码#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #define L(i) (T[i].s[0]) #define R(i) (T[i].s[1]) #define F(i) (T[i].fa) #define V(i)原创 2017-02-12 09:44:00 · 257 阅读 · 0 评论 -
QTREE系列1,4,5,6,7 LCT
QTREE1题意:给出一棵N(N <= 10000)个点的树,要求支持: 1.改变第i条边的权值 2.求a->b上的最大边权解:直接树剖或LCT即可代码1.LCT(660ms)#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #define L(i) (T[i].原创 2017-02-12 09:10:53 · 666 阅读 · 0 评论 -
BZOJ2049 LCT
换了一种新写法,感觉比之前好 主要注意define Rotate()别写错#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> #include<iostream> #define For(i,j,k) for(register int i=(j);i<=(int)k;i++原创 2016-12-17 17:41:31 · 327 阅读 · 0 评论 -
BZOJ 4025 二分图 LCT
维护关于删除时间的最大生成树 一个奇环的影响仅取决于环上删除时间最小的边 对于每个时刻 加入一条边时 若它为树边直接加 若形成环,则弹出删除时间最小的边,若同时为奇环,则将最小边加入集合,表示这条边存在时,图中总有奇环 (偶环不用加这条边,因为若之后加入的边与这条边形成了奇环,那么新边一定能与其他边构成奇环) 删去一条边时 若为树边直接删 若在集合中,在集合中删去 这样,在每一时原创 2017-02-12 21:48:40 · 277 阅读 · 0 评论