原文:【知识总结】线段树合并及其复杂度证明

应该算是比较基础的知识了吧 随便写写,主要内容是证明。 例题 现编的 :有一棵 m 个点的有根树,每个点上有若干个数, m 个点上共有 n 个数,数的规模是 N 。每次询问给定 u,l,r ,求 u 的子树中有多少个数在 l,r 中。 做法是每个点开一棵线段树,插入这个结点上的数。如果能把一个结点的线段树的信息在合理的时间内全部插入 或者说 合并 到它父亲的线段树中,就可以由下往上做一遍树上递推, ...

2019-12-18 15:13 0 328 推荐指数:

查看详情

伸展(Splay)复杂度证明

本文用势能法证明\(Splay\)的均摊复杂度,对\(Splay\)的具体操作不进行讲述。 为了方便本文的描述,定义如下内容: 在文中我们用\(T\)表示一棵完整的\(Splay\),并(不严谨地)用\(|T|\)表示\(T\)这棵\(Splay\)的节点数目。 如无特殊说明,小写英文字母 ...

Fri Sep 28 03:53:00 CST 2018 3 1144
线段合并 总结

今天学习了一下动态开点的线段以及线段合并吧 理解应该还是比较好理解的,动态开点的话可以避免许多空间的浪费,因为这类问题我们一般建立的是权值线段,而权值一般范围比较大,直接像原来那样开四倍空间的话空间复杂度不能承受。 动态开点的代码如下: 因为对应位置的结点所代表 ...

Wed Apr 17 06:36:00 CST 2019 0 599
关于树上背包复杂度证明

众所周知,树上背包如果上下界都卡紧了复杂度会是 \(O(nm)\),下面来进行这一点的证明。 以下设节点总数为 \(n\),背包容量最大是 \(m\)。 合并两个泛化背包的复杂度为 \(O(s_1s_2)\),其中 \(s_1\) 是第一个泛化背包的容量,\(s_2\) 是第二个背包的容量 ...

Mon Jan 03 15:17:00 CST 2022 1 1034
的遍历及复杂度分析

的遍历及复杂度分析 时间复杂度:由于要遍历的所有节点,故时间复杂度均为O(n) 空间复杂度:递归算法用函数栈实现,空间复杂度即为栈的深度,也即的高度O(logn) 此时的栈中存参数,函数指针,局部变量。 前序遍历 print(TreeNode * root) { if(root ...

Fri Dec 06 22:08:00 CST 2019 0 574
关于 min_25 筛的入门以及复杂度证明

min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人感觉套上素数定理证明复杂度的话应该要把下面的 log 改成 ln ,不过也差不多 ...

Fri Apr 12 17:40:00 CST 2019 0 503
K-D tree 区域查询复杂度证明

查询算法的流程 如果查询与当前结点的区域无交集,直接跳出。 如果查询将当前结点的区域包含,直接跳出并上传答案。 有交集但不包含,继续递归求解。 K-D Tree 如何划分区域 可以借助下文图片理解。 我们不仅可以将 K-D Tree 理解为一个高维二叉搜索,通过某一维 ...

Tue Aug 04 16:00:00 CST 2020 9 1099
关于非旋FHQ Treap的复杂度证明

非旋FHQ Treap复杂度证明(类比快排) a,b都是sort之后的排列(从小到大) 由一个排列a构造一颗BST,由于我们只确定了中序遍历=a,但这显然是不能确定一棵的形态的。 由一个排列b构造一颗Heap(大根),由于没有重复元素,然后人为钦定左儿子<右儿子,那么他的后序遍历=b ...

Thu Dec 26 04:31:00 CST 2019 1 988
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM