原文:线段树为什么要开4倍空间

问题 : 线段树空间只需要 n即可 对于这种建图方式,建出来的并不是完全二叉树,而是具有完全二叉树性质 父节点为x,则左儿子为 x,右儿子为 x ,好处:可以省掉许多并不需要的节点。由于具有完全二叉树这种性质, n空间一定不够用 见下图: 问题 : 线段树空间只需要 n即可 证明: 设长度为N的数组在线段树中,编号最靠右的节点为F N 。 上图长度n ,编号最右节点为 代码测试: 思路:通过观察在 ...

2019-09-02 15:24 0 381 推荐指数:

查看详情

简单的线段以及线段数组四大小讨论

线段 介绍 最基本的线段拥有 单点更新(OlogN) 和 区间查询(OlogN) 的良好性质. 他的核心思想将一个区间不断地进行二分, 减少运算量. 基本思路 使用数组存储线段中各个点的具体值, 若一个结点的下标为rt, 则他的左儿子下标为 rt << 1, 右儿子下标 ...

Tue Oct 31 04:54:00 CST 2017 0 1069
线段

总原理: 将[1,n]分解成若干特定的子区间(数量不超过4*n) 用线段对“编号连续”的一些点,进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)) 用线段统计的东西,必须符合区间加法,(也就是说,如果已知左右两子树的全部信息,比如要能够推出父节点);否则,不可能通过分 ...

Sat May 19 08:43:00 CST 2018 4 11559
线段(区间

目录 为什么要使用线段? 什么是线段? 创建一棵线段 线段的查询操作 线段的更新操作 为什么要使用线段? 最经典的线段问题:区间染色   有一面墙 ,长度为n,每次选择一段儿墙进行染色,m次操作后 ...

Sun Apr 12 16:18:00 CST 2020 0 907
值域线段and动态开线段

值域线段每一个节点代表一个值,其他没什么区别 动态就是节省了没有用到节点,其中重要一点的是不需要节点是连续的(即id值是任意的,只要可以找到即可) 例题 Bzoj 4627 回转寿司 题意 给n个数问区间和在L<=sum【r】-sum【l-1】<=R区间 ...

Wed Nov 15 05:14:00 CST 2017 6 816
权值线段&线段合并

会采用离散化或动态开点的策略优化空间。 更新操作: 更新的时候,我们向线段中插入一个值v, ...

Wed Oct 24 05:54:00 CST 2018 0 1607
[线段系列] 线段合并

这一篇来讲讲线段合并。 前置知识:动态开点线段 还是一样先给一道例题:[JOI2012] Building2 题面是日文的,这里给出中文翻译: 有n">n">n个城市,它们组成了一棵。 第i">i个城市有一座高度为Hi">Hi的建筑。 n">n">i">Hi">你需要选择一条尽量长 ...

Wed Oct 30 00:59:00 CST 2019 0 293
线段合并

线段合并,就是将已有的两棵线段合并为一棵,相同位置的信息整合到一起,通常是权值线段 比较裸的,就是将一棵线段的每一个位置取出来插入另一棵中 但比较高效的线段合并可以参照可并堆的合并方式 线段合并的原理十分简单,具体步骤如下: 对于两颗的节点u和v ①如果u为空,返回v ②如果v为空 ...

Thu Mar 29 02:42:00 CST 2018 1 5345
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM