![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树链剖分
文章平均质量分 51
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
[WOJ4103] 换根意义下的树链剖分
#include<bits/stdc++.h> #define N 100050 #define int long long using namespace std; int first[N], nxt[N], to[N], tot; void add(int x,int y){ nxt[++tot] = first[x], first[x] = tot, to[tot] = ...原创 2019-02-22 23:02:54 · 232 阅读 · 0 评论 -
P4719 [模板] 动态DP
传送门 考虑普通的DP 考虑用树剖维护, 令 转换为矩阵 这里乘法变成加法,加法变成max 留一个LCT的坑 #include<bits/stdc++.h> #define N 100050 #define inf 1000000000 using namespace std; int first[N],next[N*2],to[N*2],tot...原创 2019-02-14 22:56:31 · 144 阅读 · 0 评论 -
P4092 [HEOI2016/TJOI2016]树 [ 树剖]
传送门 单点修改 , 链查询查到了就break 线段树查询时先找到区间 , 区间内尽量往右边找 , 这样深度更大 #include<bits/stdc++.h> #define N 100050 #define M N*2 using namespace std; int n,m,tag[N]; int first[N],next[M],to[M],tot; int id[N...原创 2019-01-22 12:06:44 · 187 阅读 · 0 评论 -
[TJOI2015]旅游 [树链剖分神题]
传送门 第一眼看是树剖加链上最大最小 , 但必须保证最小出现在最大之前 于是我们考虑直接维护一个区间最大最小的差 (保证最小在最大之前) 我们发现,这个差就是 等等,我们从下往上走和从上往下方向不同(废话) 也就是说我们从下往上要用的是上面的最大-下面的最小 反之则是下面的最大-上面的最小 于是我们考虑维护两个(lval,rval) 然后考虑树剖时如何合并?? 我们将最...原创 2018-12-02 20:46:29 · 149 阅读 · 0 评论 -
魔法树[树剖]
传送门 题意: 链修改,子树和查询 直接树剖就好了 #include<bits/stdc++.h> #include<cstdio> #define N 100005 #define M 200005 #define ll long long using namespace std; int first[N],next[M],to[M],tot; int sign,...原创 2018-11-01 20:15:08 · 170 阅读 · 0 评论 -
Nim[树剖]
Description 著名游戏设计师vfleaking,最近迷上了Nim。普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取。谁不能取谁输。这个游戏是有必胜策略的。于是vfleaking决定写一个玩Nim游戏的平台来坑玩家。 为了设计漂亮一点的初始局面,vfleaking用以下方式来找灵感:拿出很多石子,把它们聚成一堆一堆的,对每一堆编号1,...原创 2018-10-23 23:22:32 · 206 阅读 · 0 评论 -
旅行[树剖][线段树动态开点]
题目描述 S国有N个城市,编号从1到N。城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市。每个城市信仰不同的宗教,如飞天面条神教、隐形独角兽教、绝地教都是常见的信仰。 为了方便,我们用不同的正整数代表各种宗教, S国的居民常常旅行。旅行时他们总会走最短路,并且为了避免麻烦,只在信仰和他们相同的城市留宿。当然旅程的终点也是信仰与他相同的城市。S国政府为每个城市标定了不同的旅行...原创 2018-10-25 21:26:58 · 170 阅读 · 0 评论 -
软件保管器[树链剖分]
题目描述 Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。Debian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器。 ...原创 2018-10-16 20:42:34 · 112 阅读 · 0 评论 -
染色[树链剖分][线段树合并]
题目描述 输入格式: 输出格式: 对于每个询问操作,输出一行答案。 输入样例#1: 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1 2 Q 3 5 输出样例#1: 3 1 2 分析 树链剖分--> 将一棵树划分成几个区间,怎么算颜色个数呢 线段树的val表示区间的颜色段...原创 2018-10-15 21:13:15 · 218 阅读 · 0 评论 -
树的统计[树链剖分]
题目描述 一棵树上有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本身 输入格式: 输入文...原创 2018-10-13 13:43:36 · 134 阅读 · 0 评论 -
树链剖分
树链剖分 树链剖分 就是对一棵树分成几条链,把树形变为线性,减少处理难度 需要处理的问题: 将树从x到y结点最短路径上所有节点的值都加上z 求树从x到y结点最短路径上所有节点的值之和 将以x为根节点的子树内所有节点值都加上z 求以x为根节点的子树内所有节点值之和 概念 重儿子:对于每一个非叶子节点,它的儿子中 儿子数量最多的那一个儿子 为该节点的重儿子 轻儿子:对于每一个非叶子节点...转载 2018-08-26 20:11:08 · 203 阅读 · 0 评论