Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 子阵列中小于x的整数数_Arrays_Algorithm_Sorting_Data Structures - Fatal编程技术网

Arrays 子阵列中小于x的整数数

Arrays 子阵列中小于x的整数数,arrays,algorithm,sorting,data-structures,Arrays,Algorithm,Sorting,Data Structures,给定一个数组A[1..n]并对该数组进行Q查询。 每个查询的格式都是(xab),对于我需要找出的每个查询,主数组中由a[a..b]表示的子数组(a,b)中有多少元素小于x。 如何有效地完成这项工作 或者,如果需要,在阵列之上构建什么样的数据结构,以便高效地执行任务 限制: 暗示 使用存储已看到值的累积直方图 将查询(xab)转换为F(x,a)-F(x,b-1),其中F(x,a)的计数小于0..a范围内的x 按a对这些F(x,a)查询进行排序 然后迭代数组索引i,将元素A[i]插入Fenwick树

给定一个数组A[1..n]并对该数组进行Q查询。 每个查询的格式都是(xab),对于我需要找出的每个查询,主数组中由a[a..b]表示的子数组(a,b)中有多少元素小于x。
如何有效地完成这项工作
或者,如果需要,在阵列之上构建什么样的数据结构,以便高效地执行任务
限制:
暗示 使用存储已看到值的累积直方图

将查询(xab)转换为F(x,a)-F(x,b-1),其中F(x,a)的计数小于0..a范围内的x

按a对这些F(x,a)查询进行排序


然后迭代数组索引i,将元素A[i]插入Fenwick树,并回答A==i的任何F(x,A)查询。

显示您所做的,我的意思是,代码。我计划如何使用段树。但是我的想法是空间效率很低。你提出的使用Fenwick树的解决方案是可行的,前提是x对所有查询都相同,但事实并非如此。我同意x对所有查询都不相同。然而,我相信这个解决方案适用于不同的x(因为芬威克树允许我们回答这样的问题:“我们看到了多少有价值的东西,但是如果我们试图解决这样的问题,那么关于子数组的信息是如何利用的?这个问题必须在子数组上解决。也许你可以详细说明。