我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链,复杂度为O(logN)。 剖分方法: 盲目剖分 随机剖分 启发式剖分综合比较,启发式剖分是剖分时的最 ...
分类:
其他好文 时间:
2017-12-17 22:17:53
阅读次数:
132
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1146 题意概括 在一棵树上,每一个点一个权值。 有两种操作: 1、单点修改 2、询问两点之间的树链上的第k大值 题解 水题。 就是烦了一点。 树链剖分+带修主席树。 带修主席树: BZOJ1901 ...
分类:
编程语言 时间:
2017-12-16 17:22:26
阅读次数:
242
题目大意:给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 题解:有多种做法,我这边用了倍增和树链剖分(都是在线而且好像都不是很快。。。) 倍增:(写于2017-9-13) bfs函数:处理每个节点的深度(其实dfs更常用,当时我用的是bfs)和父亲(dad[i][0]) init函数:处理 ...
分类:
其他好文 时间:
2017-12-16 14:43:35
阅读次数:
174
题目大意:树链剖分,有4个操作,1:把x->y路径上值都加上z,2:求x->y路径上值之和,3:把x的子树值都加上z,4:求x的子树值之和 题解:树链剖分,就是对一棵树分成几条链,把树形变为线性,减少处理难度 具体每个函数的作用见程序 C++ Code: ...
分类:
其他好文 时间:
2017-12-15 20:11:17
阅读次数:
136
这题贼墨迹,写了一天多。 复杂度O(nlog^4n) 用到了我会的最高端的数据结构 树链剖分套线段树套平衡树 做个树链剖分这样就可以用线段树了 做个线段树这样就可以用平衡树了 然后一层一层向下搜 二分答案 或许这就是高端的暴力吧 ...
分类:
Web程序 时间:
2017-12-11 20:35:48
阅读次数:
252
题解: 主席树+树状数组+树链剖分 树状数组维护修改 树链剖分维护树型结构 主席树维护持久化 代码: ...
分类:
其他好文 时间:
2017-12-09 18:18:35
阅读次数:
154
题解: 树链剖分 和普通的树链剖分不一样,这里的线段树不只是要记录x-y的和 而是要记录x左到y左,x左到y右,x右到y左,x右到y右 然后就可以了 代码: ...
分类:
其他好文 时间:
2017-12-07 20:51:45
阅读次数:
153
http://www.lydsy.com/JudgeOnline/showsource.php?id=2443124 树链剖分套线段树直接肝 注意合并过程 ...
分类:
其他好文 时间:
2017-12-07 00:32:11
阅读次数:
160
题解: 树链剖分+离线处理 先考虑一个暴力的方法 把z从底往上面的父亲每一个加一 然后对于l-r中的节点 计算从当前节点到根节点的总和 那么就是答案 于是我们可以离线预处理 代码: ...
分类:
其他好文 时间:
2017-12-06 20:13:24
阅读次数:
215
搞了好几天终于把树剖模板过了 感觉最难理解的是对两点之间路径上的修改,我就是在这里被卡了好久 还是看注释吧 原题链接:https://www.luogu.org/problemnew/show/P3384 ...
分类:
其他好文 时间:
2017-12-05 21:23:18
阅读次数:
180