
树链剖分
Sdywolf
沃是一只蒟蒻
展开
-
树链剖分
我们先来看这样一个问题: 给出一棵树,每个节点有一个权值,每次操作可以修改某一节点的权值,或是询问任意两点间路径上的最大值或是权值和,要求复杂度为O(nlogn)n为点数。 由于有修改操作,使得不能使用预处理(倍增数组)来实现快速查询,树链剖分就可以通过把树剖分成一些链,对于链上的节点,可以用原创 2017-04-17 09:24:33 · 300 阅读 · 0 评论 -
BZOJ1036--树链剖分模板
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身代码如下:原创 2017-04-17 20:42:57 · 342 阅读 · 0 评论 -
BZOJ 4034: [HAOI2015]树上操作【树链剖分】【DFS序】
Description有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。题解显然,树链剖分的序也是DFS序,直接维护就可以了。代码#include<cstdio> #include<原创 2017-10-18 19:32:50 · 373 阅读 · 0 评论 -
BZOJ 1576: [Usaco2009 Jan]安全路经Travel【最短路树】【树链剖分】
Description题解复习一下树链剖分。最短路树,非树边与树边形成的环上,除了LCA,其他的点都可以经过非树边,从所有答案中刷最小值,用树链剖分维护。代码#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define maxn 100006 #define maxe 200006 using names原创 2017-11-02 22:41:44 · 372 阅读 · 0 评论