随笔分类 -  数据结构-树链剖分

摘要:"题目链接" Solution 有几点关键,首先,可以证明次小生成树一定是由最小生成树改变一条边而转化来. 所以需要枚举所有非最小生成树的边$(u,v)$.并且找到 $u$ 到 $v$ 的边中最大边和次大边. 为什么要找次大边呢?? 因为可能最大边与要替换的边长度相等,那么这种条件生成的便不是严格的 阅读全文
posted @ 2018-09-06 14:41 Kevin_naticl 阅读(366) 评论(0) 推荐(1)
摘要:"题目描述" Solution 这道题考试的时候竟然没有仔细想,结果只拿了暴力分... 其实就是一个 DFS序+树状数组。 我们先把用 DFS 把它变成一个序列,同时记录它们的 $siz$。 那么我们每一次连一条边之后就是对它的子树产生影响。 在树状数组里面维护就好了。 代码 cpp include 阅读全文
posted @ 2018-07-15 16:35 Kevin_naticl 阅读(223) 评论(0) 推荐(0)
摘要:题目描述 现在有一颗以 1 为根节点的由 n 个节点组成的树,树上每个节点上都有一个权值 $v_i$。现在有 Q 次操作,操作如下: :查询节点 x 的子树中与 y 异或结果的最大值。 :查询路径 x到 y 上点与 z 异或结果最大值 输入格式 第一行是两个数字 n , Q 。 第二行是 n 个数字 阅读全文
posted @ 2018-07-14 17:34 Kevin_naticl 阅读(319) 评论(0) 推荐(0)
摘要:题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径 阅读全文
posted @ 2018-06-30 14:23 Kevin_naticl 阅读(219) 评论(0) 推荐(0)
摘要:关于长链剖分 长链剖分,也属于树链剖分的一种方式,但是其与经典的重链剖分又不太一样。 在重链剖分中,我们评判儿子重或轻的方式是比较其 子树节点数量 。 在长链剖分中,我们以 子树中最深的叶节点深度的大小 来比较。 其他步骤与重链剖分类似,都是两遍DFS即可解决,都是O(n)的复杂度。 接下来,我们来 阅读全文
posted @ 2018-06-30 11:40 Kevin_naticl 阅读(395) 评论(0) 推荐(0)
摘要:题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。 阅读全文
posted @ 2018-06-28 21:30 Kevin_naticl 阅读(282) 评论(0) 推荐(0)
摘要:题目描述 Farmer John has N barren pastures (2 Solution 树剖板子题,关键是注意统计的是边的权值,不是点的权值。 只需要在每次修改或者查询的时候将其 LCA 的 id +1,即可。 代码 cpp include using namespace std; c 阅读全文
posted @ 2018-06-28 19:17 Kevin_naticl 阅读(310) 评论(0) 推荐(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 说明 Solutio 阅读全文
posted @ 2018-06-28 09:58 Kevin_naticl 阅读(161) 评论(0) 推荐(0)
摘要:题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在”树“上。 松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a1,再去a2,......,最 阅读全文
posted @ 2018-01-04 20:09 Kevin_naticl 阅读(205) 评论(0) 推荐(1)
摘要:树链剖分___步骤 一.按照dfs序 将点重新标号. 首先,我们要理解,为什么一定要按dfs序来标号,因为,树链剖分要操作的是一棵树上,改变两个点之间最小路上边的数据,主要是因为,每一条找到的最短路,他们点的dfs序,都可以拆成几段连续的数值,所以我们可以联想到线段树,当然这是后面的步骤;每一条最短 阅读全文
posted @ 2017-12-28 21:38 Kevin_naticl 阅读(326) 评论(0) 推荐(1)