数据结构 树
数据结构 树
Authur_gyc
这个作者很懒,什么都没留下…
展开
-
KDtree 知识点简记 + 例题(HDU 5992)
文章目录定义操作建树查询例题代码参考来源定义int MAX_DIM; ///所讨论的空间的维度struct node{ int x[MAX_DIM];///所有维度的坐标信息}KDtree[maxn];操作建树按顺序选取维度dim = (dim + 1) % MAX_DIM按照目前的维度划分成两个空间build(l, r, dim) …… nth_element(KDtree + l, KDtree + mid, KDtree + r + 1, [dim](const nod原创 2020-12-01 10:37:37 · 325 阅读 · 0 评论 -
2020 CCPC Kingdom‘s Power(树+思维)
思路要么是让人走到叶子结点,再折返到岔口走下一个叶子结点。要么是折返的花费高于从根派一个新的人过来,走到其他的叶子结点。那就要获得树的深度信息,通过深度信息获取结点到根的距离以及各叶子结点到岔口的距离。并且由于我们肯定是优先走深度小的叶子结点,再走深度深的叶子结点,所以需要对每个结点,都对以它为根节点的子树按照各分支的最大深度排序。排序后树的每个分支都是左低又高,从左往右深搜并更新答案即可。代码#include <bits/stdc++.h>using namespace std原创 2020-10-21 17:54:42 · 302 阅读 · 0 评论 -
G. Xor-MST(01字典树 Boruvka算法)
题目链接题意给n个点的点权,在该完全图上求最小生成树。两点之间的边权为两个点权的异或值。思路完全图,n <= 1e5,跑 prim 或者 kruscal 会T。因为异或,考虑01字典树树根为高位,叶子为地位。建一个深度为 30 的01字典树左右两个子树就是两个连通块,从两个子树里面选点相连,要连边的权值尽可能小就是让公共前缀尽可能的长。可以看到就是Boruvka算法的思想。代码#include <bits/stdc++.h>using namespace std;原创 2020-08-02 23:20:01 · 306 阅读 · 0 评论 -
CodeForces - 1288E Messenger Simulator(树状数组)
题目CodeForces - 1288E Messenger Simulator思路开二倍空间,数状数组左侧表示靠后面的数字,右侧为靠前的数字。每次操作,都把数字往树状数组右侧丢,维护相对位置。通过树状数组的区间查询作差,即可求得某个数字前面有多少个数字。参考来源https://blog.csdn.net/qq_45458915/article/details/103993107代...原创 2020-02-01 15:46:39 · 145 阅读 · 0 评论 -
19牛客多校第四场 A题 meeting(树的直径)
题目链接https://ac.nowcoder.com/acm/contest/884/A概念树的直径是指:树上最远的两个点的距离。题目给你一颗树,树上的一些点上面有人 ,树的边的距离都为1,让你找一个集合点,使得这个集合点到有人的节点的最大距离 最小。思路两次 dfs 即可得解。(bfs也可以 , 实现起来会麻烦一些)不管深搜还是广搜,我们首先都是先找一个有人的节点A,以A为起点...原创 2019-08-02 21:48:11 · 116 阅读 · 0 评论