fenwick-tree相关内容

是否可以在 O(lg N) 范围内查询不同整数的数量?

我已经阅读了一些关于两种常见数据结构的教程,它们可以在 O(lg N) 中实现范围更新和查询:段树 和二元索引树(BIT/Fenwick Tree). 我发现的大多数示例都是关于一些关联和交换操作,例如“范围内的整数总和"、“范围内的整数异或"等. 不知道这两种数据结构(或任何其他数据结构/算法,请提出)是否可以在O(lg N)中实现以下查询?(如果不是,O(sqrt N) 怎么样) ..
发布时间:2021-12-22 08:30:56 其他开发

是否可以查询O(lg N)范围内不同整数的数量?

我已经通读了一些有关两个常见数据结构的教程,可以在O(lg N)中实现范围更新和查询:细分树和二元索引树(BIT /分域树)。 / p> 我发现的大多数示例都是关于一些关联和交换运算的,例如“范围内的整数之和”,“范围内的XOR整数”等。 我想知道这两个数据结构(或任何其他数据结构/算法,请提出)是否可以在O(lg N)中实现以下查询? (如果否,那么O(sqrt N)怎么样) ..
发布时间:2020-06-03 20:34:18 其他开发

是否可以在O(n)中构建Fenwick树?

Fenwick树是一种数据结构,它允许两种操作(您可以使用更多操作): 点更新 update(索引,值) 前缀总和 query(index) 这两个操作都在 O(log(n))中,其中 n 是数组的大小。我完全理解如何进行操作及其背后的逻辑。 我的问题是如何初始化一个数组的Fenwick树。显然,我可以通过调用 n 次在 O(nlog(n))中实现这一目标update(i,ar ..
发布时间:2020-06-03 20:03:13 其他开发

如何使用二进制索引树(BIT)查找一定长度的增加子序列的总数

如何使用二进制索引树(BIT)找到一定长度的增加子序列的总数? 其实这是一个问题,从 Spoj在线判断 示例 假设我有一个数组 1,2,2,10 长度为3的子序列越来越多, 1,2,4 和 1,3,4 所以答案是 2 。 解决方案 让我们: dp [i,j] =在i结束的长度为j的增加子序列的数量 一个简单的解决方案是在 O(n ^ 2 ..

间隔,分段,边界树是一样的吗?

今天我听了关于fenwick树(二进制索引树)的讲座,老师说这个树是间隔和分段树的泛化,但是我的这三个数据结构的实现是不同的。 这个确定是真的吗?为什么? 解决方案 我从来没有听过二进制索引树称为任何东西的泛化。这绝对不是间隔树和段树。我建议你按照这些链接来说服自己。 比这个树是间隔和段树的一般化 如果通过“这棵树”,你的老师意思是“二进制索引树”,那么他是错误的。 我 ..
发布时间:2017-04-03 12:09:22 其他开发

如何使用二进制索引树来计算元素的比为指标,数值越小多少?

的问题是计算值的数量小于索引后的值。这里是code,但我无法理解二进制索引树被用来做什么呢? 的#include<的iostream> #包括<载体> #包括<算法> #定义LL长长 #定义MOD 1000000007 #定义MAXN 10 使用名字空间std; 的typedef对< INT,INT>二; INT位[MAXN + 1]; 诠释一个[ ..
发布时间:2015-11-30 22:27:20 C/C++开发

平衡的括号中给出的范围最长链的长度

首先,定义的“平衡”括号中的字符串作为字符串,从而 对于每一个“(”有一个独特的,匹配的')'的地方后 “(” 例如,以下字符串都是“平衡”: () ()() (())() ,而这些都不是: )( ())( 由于字符串括号(长度< = 1,000,000)和范围查询列表,找到 均衡括号内的每个范围为最大长度 每个&LT的; = 100,000查询(使用0索引的范围) 例如: ..
发布时间:2015-11-30 22:23:39 C/C++

SPOJ DQUERY:TLE即使有几分?

下面是我要解决,我使用的事实,问题是preFIX总和[I] - preFIX总和[I-1] 导致频率为大于零,以确定鲜明的数字,然后我消除了频率,但即使有位,我得到一个TLE 鉴于正数A1的序列,A2,...,an和一数目的d查询。 一个D-查询是一对(I,J)(1≤I≤Ĵ≤N)。 有关各d查询(I,J),则必须返回在子序列艾不同元件的数量,AI + 1,...,AJ。 输入 线路1:N ..
发布时间:2015-11-30 21:18:51 C/C++

非递减子序列在阵列中使用树状数组或位最大总和

我们如何才能找到一个非递减子序列在使用树状数组的数组的最大一笔?例如,我们有1 4 4 2 2 3 3 1,这里一个非递减子序列的最大总和是11(1 2 2 3 3)。 解决方案 最高金额可使用动态规划算法来找到。扫描阵列和每个元素的值添加到最大的子序列总和这是有效的(亚序列,其值不大于该元素更大结束)。 高效的实现需要一些方法来快速查找特定子范围的最大值。扩充二进制搜索树可以用来做。树状数 ..
发布时间:2015-11-30 20:28:03 C/C++

怎么办二进制索引树或树状数组一系列更新?

我试图解决 问题^ h 嗨,盗! 输入:标准输入 输出:标准输出 在古代海盗时代,海盗土地被分成两队海盗, 即海盗和巴巴里海盗。每个海盗队没有固定的, 有时候对手海盗袭击,他被带走的其他海盗队。 所有的突然魔术师出现在海盗土地,在那里他正在转型 从他们的团队,其他球队海盗在他自己的意志。当然,方便的法术 被使用。改变团队的过程被称为变异。 有ñ海盗和所有的海盗都从0一个唯一的ID为N-1。 伟大的 ..
发布时间:2015-11-30 20:27:43 C/C++

如何有效地相乘的范围的阵列的值与给定数量?

的幼稚的方法是将线性迭代的范围内,乘以在所述范围内的每个数。 例:数组:{1,2,3,4,5,6,7,8,9,10}; 指数乘以3到指数8 2.假设一家立足指数。 结果数组应该是:{1,2,6,8,10,12,14,16,9,10}; 我知道二进制索引树可以用于'总和“的一部分。我怎样才能有效地乘以给定的范围内有多少? 解决方案 如果你想真正修改数组,你不能这样做比天真的线性算法更好的: ..
发布时间:2015-11-30 16:15:30 C/C++开发

芬威克树的Java

我试图实现树状数组在Java中,但我没有得到期望的结果。 这是我的code: 进口java.io. *; 导入的java.util。*; 导入的java.math *。 类fenwick1 { 公共静态INT N; 公共静态长[]一个; 公共静态无效的主要(字串[] args)抛出IOException异常{ 的BufferedReader BR =新的 ..
发布时间:2015-11-30 15:40:42 Java开发

如何找到增加一定长度的子序列与二进制树索引的总数(BIT)

其实这是一个 SPOJ 的问题。 假设我有一个数组 1,2,2,10 。 日益子序列长度为3的是 1,2,4 和 1,3,4 (基础)的索引。 那么,答案是 2 。 解决方案 让: DP [I,J] =长度为j增加子序列,在我结束数 这是简单的解决方案是在为O(n ^ 2 * K): 对于i = 1到n做 DP〔I,1] = 1 对于i = 1到n做 对于j = ..
发布时间:2015-11-30 15:00:48 C/C++

为区间,分段,分域树一样吗?

今天,我听到一个关于分域树讲座(二进制索引树)和老师说的比这棵树间隔和段树的推广,但是我这三年的数据结构的实现是不同的。 这是afirmation真的吗?为什么? 解决方案 我从来没有听说过的二进制索引树叫什么推广。这当然不是区间树和的段树的。我建议你​​遵循的链接说服自己动手。 不是这棵树的间隔和段树的泛化 如果用“这棵树”你的老师的意思是“二进制索引树”,那么他错了。 但我这 ..
发布时间:2015-11-30 14:59:57 C/C++