![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树链剖分
不可知论大祭司
Know how to solve every problem that has been solved.
展开
-
【LuoguP2146 】 软件包管理器 树剖06
树剖的小技巧链接分析代码链接传送门分析第一次看这题的时候感觉和原先写的树上的开关问题很相似,至少在uninstall的部分是对某个节点的子树进行改变,但是后来发现还是有点不一样,因为开关问题终究是状态的反转,而这题的意思就是整体全部改变。有一个小技巧可以省去写查询函数,就是在每次操作前后记录sum[1],做差即可求结果。因为题目要求改变安装状态的软件包数,这样整体考虑的却很合理。还要注意我们的线段树是从1开始,这里的节点编号从0开始,需调整一下。代码#include <cctype>原创 2020-12-27 09:57:56 · 98 阅读 · 0 评论 -
【USACO10FEB】Slowing down G
Slowing down G题目描述链接分析代码题目描述每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场。牧场构成了一棵树,粮仓在1号牧场。恰好有N-1条道路直接连接着牧场,使得牧场之间都恰好有一条路径相连。第i条路连接着A_i,B_i,(1 <= A_i <= N; 1 <= B_i <= N)。 奶牛们每人有一个私人牧场P_i (1 <= P_i <= N)。粮仓的门每次只能让一只奶牛离开。耐原创 2020-12-12 14:07:54 · 164 阅读 · 0 评论 -
【hud3966】树剖模板05
题目大意树剖裸题,支持路径上加,单点修改题目链接传送门代码要注意有多组输入,每次都要初始化,测试样例只给了一组,有些迷惑性。#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cctype>#define mid (l + r >> 1)using namespace std;const int原创 2020-12-10 22:41:09 · 75 阅读 · 0 评论 -
【LuoguP4114】Qtree1树剖04
边权化点权题目描述题目链接解析代码测试样例题目描述给定一棵树,支持如下操作CHANGE i t 把第 i 条边的边权变成 tQUERY a b 输出从 a到 b的路径上最大的边权。当a = b时,输出 0题目链接传送门解析和上一篇博客的方法一样,而且本题只涉及一个懒标签,细节和代码量都更少,附上上一篇的链接树链剖分03代码#include <algorithm>#include <cstdio>#include <cctype>#defi原创 2020-12-04 14:57:20 · 99 阅读 · 0 评论 -
【洛谷P4315】月下毛景树 树链剖分03
P4315 月下“毛景树”题目大意题目链接分析代码准备阶段dfs线段树核心操作建树实现区间加实现区间和单点修改区间最大值查询树上操作主函数完整代码测试样例题目大意Change k w:将第k条树枝边的边权改变为w。Cover u v w:将节点u与节点v之间的边上的边权全改变为w。Add u v w:将节点u与节点v之间的树枝上边的边权都增加w。Max u v:询问节点u与节点v之间边权。题目链接传送门分析可以很快意识到这是一题树链剖分题,不过和传统的树链剖分不一样,本原创 2020-12-03 22:07:10 · 233 阅读 · 0 评论 -
【洛谷P3383】魔法树 树剖模板02
LuoguP3833魔法树题目概述题目链接分析代码测试样例题目概述给你一棵树,节点出始权值是0.要求实现两种操作路径u到v上所有节点的权值增加某个值询问操作,询问以u为根的所有子树的权值之和(包括u自身)题目链接传送门分析树链剖分,模板题,我只会做模板题,(笑附上上一篇模板的链接传送门本题由于点权的初始值时0,建树操作实际上可以不进行,不过还是走一下程序比较完整。有一点需要注意的是节点的编号是从0开始的,如果不做任何处理的话会对链式前向星加边以及dfs时造成影响,方便起见,我们将每原创 2020-12-03 15:09:38 · 126 阅读 · 0 评论 -
【洛谷P3187】树上操作 树剖模板01
LuoguP3178题目大意原题链接做法代码一些吐槽题目大意有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。原题链接传送门做法链式前向星加边两次dfs,第一次算出父节点,子树大小,深度,重儿子,第二次算出每个点的dfs序号,每一条链的链首建线段树树链剖分代码#include原创 2020-12-03 11:04:25 · 992 阅读 · 6 评论