
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
节点x的左子节点为x << 1(即2x),右子节点为x << 1 | 1(即2x+1)。左移补0乘以2,右移补符号位除以2!// 我们采用数组的方式来存储数据,利用二叉树的性质:2x表示x的儿子编号,2x+1表示x的右儿子编号。//堆是一种二叉树,其满足:儿子的权值都比自己的权值小(大根堆)或相等或大(小根堆)// 这个性质不断向上传递直到根,保证根的权值是整棵树中最大的/最小的!若当前节点值大于

就是分成了两个区间:[i,i+2^j-1]----->[i,i+2^(j-1)-1],[i+2^(j-1),i+2^j-1]状态转移方程为:st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);max(st[l][k],st[r-2^k+1][k])就是分解为两个长度相同的并且为2的次方长度的区间!可以分解为:[2,2+2^2-1],[7-2^2+1,7]的

1,介绍并查集并查集是一种图形数据结构,用于存储图中节点的连通关系。每个节点都有一个父亲可以理解为“一支伸出去的手”,会指向另外一个点,初始时指向自己一个点的根节点是该点的父亲的父亲的……的父亲,直到某个节点的父亲是自己(根),当两个节点相同时,我们就说他们是属于同一类,或者说是连通的。如下:7--->5--->1--->3<---64--->27 5 1 3 6 d的根都是3,所以他们是连通的,

二叉搜索树是 “具有有序性” 的二叉树,其左、右子树满足:对于树中的任意一个节点,其左子树中所有节点的值都小于该节点的值,其右子树中所有节点的值都大于该节点的值(若存在相等值,需根据具体规则定义,通常不允许重复值或规定重复值在右子树)。对于二叉树(m=2),该式简化为n0 = n1 + 2n2 + 1,进一步可推导:若二叉树中没有度为 1 的节点(n1=0),则叶子节点数 = 度为 2 的节点数

树的重心:是指对于某个点,将其删除后可以使得剩余联通块的最大值最小的点等价于:以某个点为根的树,将根删除后,剩余的若干个子树的大小的最大值最小另一种说法:或是其他点到该点的权值之和最小(下面不提了)用mss[x]表示x点的所有子树的大小的最大值(就是子树所含节点的最大值)性质:1,重心的若干子树的大小一定<=n/2.n:总结点。除了重心以外的所有其他点,都必然存在一棵节点个数>=n/2的子树。

详细解释c++的树上差分问题,适合参加算法比赛的同学!

详细解释c++的dfs序加例题训练,适合参加算法比赛或对算法感兴趣的兄弟集美

详细解释c++数据结构树中的求lca最近共工作祖先的方法以及相关例题详解,适合参加算法比赛和对算法感兴趣的人!

以最浅显易懂的语言深入讲解树状数组,配有例题加强练习(有代码详解)!参加算法比赛或对算法感兴趣的兄弟集美必看哟!

线段树是一种高效维护区间信息的数据结构,采用二叉树结构将区间操作的时间复杂度优化至O(logN),适用于区间最值、区间和等查询。核心操作包括建树、区间修改和查询,其中懒标记(Lazy Tag)技术通过延迟处理实现高效区间更新。建树从根节点递归构建,修改和查询时需先下放懒标记再处理子节点。注意除法等非线性操作不适合使用懒标记。例题展示了如何用线段树实现区间修改和求和,体现了其处理大规模数据的高效性。








