
树链剖分
文章平均质量分 72
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 3626 LCA 树链剖分
题目大意:给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。有q次询问,每次询问给出l r z,求sigma_{l(即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和)这题看见了直接卡壳。。。然后看了题解才搞懂要怎么写原创 2014-08-25 17:19:59 · 3589 阅读 · 1 评论 -
BZOJ 2402 陶陶的难题II 二分答案+斜率优化+树链剖分+线段树维护凸包
题目大意:给定一棵树,每个点有两个坐标(x1,y1)和(x2,y2),多次询问某条链上选择两个点i和j(可以相同),求(y1i+y2j)/(x1i+x2j)的最大值我竟没看出来这是01分数规划。。。真是老了。。。二分答案ans,问题转化成验证(y1i+y2j)/(x1i+x2j)是否>=ans将式子变形可得(y1i-ans*x1i)+(y2j-ans*x2j)>=0加号两边独立,分原创 2015-03-18 10:00:31 · 2376 阅读 · 0 评论 -
BZOJ 2157 旅游 树链剖分
题目大意:维护一棵树,每条边有边权,支持下列操作:1.修改某条边的边权2.将某条路经上的边权反转3.询问某条路经上的和4.询问某条路经上的最大值5.询问某条路经上的最小值裸链剖怎么这么多- -边权的处理方式是把边权放到两端点中深度较大的那个里反转就把和取反,最大最小值交换后取反就行了为何这数据范围给我一种“暴力MS能艹过去?”的错觉- -#include原创 2015-02-05 09:29:38 · 2515 阅读 · 1 评论 -
BZOJ 2836 魔法树 树链剖分
题目大意:维护一棵有根树,每个节点初始权值为0,支持下列操作:1.链上+2.子树求和。。。。。链剖裸题- -果然链剖这种东西想要1A实在是不咋现实- -#include #include #include #include #define M 100100using namespace std;struct Segtree{ Segtree *ls,*rs; l原创 2015-02-04 11:38:14 · 1712 阅读 · 0 评论 -
BZOJ 3531 SDOI2014 旅行 树链剖分
题目大意:给定一棵树,每个点有一个权值和一个颜色,多次改变一些点的权值和颜色,多次求一条路径上与起点和终点颜色相同的点的权值和以及权值最大值每种颜色开一个线段树 动态开节点 每个点只建一条链 这样空间复杂度是O(nlogn)的然后就正常树链剖分就行了#include #include #include #include #include #define M 100100us原创 2014-12-18 11:30:22 · 1626 阅读 · 0 评论 -
UOJ #30. 【CF Round #278】Tourists Tarjan+树链剖分
题目链接:http://uoj.ac/problem/30题目大意:给定一张无向连通图,每个点有点权,多次询问两个点之间的简单路径上最小点权值的最小值首先求的是最小点权值的最小值 那么我们肯定要走点权越小的点越好 但是由于求的是简单路径 那么我们就不能经过同一个点两次那么我们Tarjan求点双联通分量 每个点双维护一个最小值 那么答案显然就是两点所在点双路径上的最小值 树链剖分即可 (原创 2014-12-01 17:24:48 · 2543 阅读 · 1 评论 -
BZOJ 3083 遥远的国度 树链剖分
题目大意:给定一棵有根树,每个点有一个权值,提供三种操作:1.将x节点变为根节点2.将x到y路径上的点的权值全部改为v3.询问x的子树中点权的最小值树链剖分没商量!不过由于是查询子树的最小权值,所以我们选择DFS序剖分,而不是先前的轻重链剖分即每个节点第一个遍历到的儿子是亲儿子 重标号就是DFS序然后就好办了 换根的话不用真的换 只需要记录当前的根节点 然后求解时分三种情况原创 2014-09-01 19:57:17 · 1685 阅读 · 0 评论 -
BZOJ 1984 月下“毛景树” 树链剖分
题目大意:给定一棵树,边上有边权,提供一堆乱七八糟的操作(0.0),多次询问两点之间边权最大值将每条边的边权放在边下面的点上,然后按照点权处理就行了。注意两个点的LCA的点权不能被算进路径中去尼玛UBUNTU奇葩系统……我不写返回值居然直接把re给我返回回去了 然后咋拍都过…… 交上去就WA…… 我跪了再也不敢不写-Wall了……#include#include#include原创 2014-11-07 14:53:18 · 2073 阅读 · 0 评论 -
BZOJ 3589 动态树 树链剖分+容斥原理
题目大意:给定一棵以1为根的有根树,每个节点有点权,提供两种操作:1.以某个节点为根的子树所有节点权值+x2.求一些链的并集的点权和,其中这些链都是由某个节点出发指向根首先子树修改,链上查询,树链剖分的WT~然后这些链上的每个点的点权都只能被加一次,肯定不能打标记,由于k总权值=单链-两两之交+三链之交……状压枚举即可 两条链的交集求法如下:1.求两条链底的LCA2原创 2014-10-23 12:51:43 · 2983 阅读 · 0 评论 -
BZOJ 2819 Nim 树链剖分/DFS序+LCA+树状数组
题意:给定一棵树,每个节点是一堆石子,给定两种操作:1.改变x号节点的石子数量2.用从x到y的路径上的所有堆石子玩一次Nim游戏,询问是否有必胜策略Nim游戏有必胜策略的充要条件是所有堆的石子数异或起来不为零这题首先一看就是树链剖分 然后题目很善良地告诉我们深搜会爆栈 于是我们可以选择广搜版的树链剖分BFS序从左到右是深搜,从右到左是回溯,一遍BFS就够单点修改区间查询还可原创 2014-09-02 09:30:06 · 2793 阅读 · 0 评论 -
BZOJ 3631 JLOI2014 松鼠的新家 树链剖分/LCA
题目大意:给定一棵无根树和一个序列,在这个序列上依次遍历,求每个点的访问次数(最后一个点的访问次数要-1)树链剖分的裸题……考场上我还是一个弱渣,啥也不会,暴力得了50分,剩下两道题爆零了。。。而且30W深搜爆栈,人生第一次手写了系统栈。。回来因为这题的原因去学了树链剖分 结果没学明白 每条重链单独开了一棵线段树 常数大的要死高一时写的代码。。。还是别看了,拿去对拍可以,阅读性欠佳原创 2014-09-07 14:36:42 · 2807 阅读 · 2 评论 -
BZOJ 2243 染色 树链剖分
题目大意:给定一棵树,树上的每个点有一个颜色原创 2014-08-23 16:06:47 · 1589 阅读 · 0 评论 -
BZOJ 4127 Abs 树链剖分
题目大意:给定一棵树,每个点有一个整数权值(可以是负数),要求支持两种操作: 1.链上加 2.链上绝对值之和由于加的数保证非负,因此一个负数变成一个正数最多有nn次 树链剖分,在线段树中维护一下区间最大负数即可 不知道为何 写了两个线段树就TLE 把两个线段树合并成一个就7s过了#include <cstdio>#include <cstring>#include <iostream>原创 2015-06-12 11:11:52 · 2387 阅读 · 0 评论