
树链剖分
yp_2013
这个作者很懒,什么都没留下…
展开
-
POJ 2763 Housewife Wind
题意: 知道了一颗有 n 个节点的树和树上每条边的权值,对应两种操作: 【LCA_RMQ+树状数组】 0 x 输出 当前节点到 x节点的最短距离,并移动到 x 节点位置 1 x val 把第 x 条边的权值改为 val 分析: 树上两个节点a,b的距离可以转化为 dis[a] + dis[b] - 2*dis[lca(a,b)] 其中 d原创 2016-02-23 11:09:59 · 305 阅读 · 0 评论 -
[转载]树链剖分
原文地址:树链剖分作者:starszys “在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的链的顶端节点,fa[v]表示v的父亲,s转载 2016-02-23 11:36:31 · 270 阅读 · 0 评论 -
CSU 1607: Do You Have The Template?
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1607裸的树链剖分#include<stdio.h> #include<string.h> #include<vector> const int N=10015; using namespace std;int head[N], to[N << 1], next1[N << 1], tot; int原创 2016-02-28 14:59:38 · 305 阅读 · 0 评论 -
hdu 5458 树链剖分模板
题意:给出一张N个点,M条边的无向图,有两个操作: 1.删除(u, v)间的一条边 2.如果删除(u, v)间的一条边可使其不连通,找出这样的边的个数,就是找(u, v)间桥的个数思路:首先离线这些操作,时光倒流从最终状态逆着加边加回原图,可以考虑用并查集建树,然后以树作为最终状态,再树链剖分预处理下,建一颗线段树维护区间和(叶子值为1代表当前边为桥),如果有边(u, v)要加入,那就将(u, v)原创 2016-06-15 20:34:23 · 403 阅读 · 1 评论