在给出子数组之和时查找数组元素

时间:2012-02-04 07:42:08

标签: arrays algorithm math

  

N个元素的数组从1到N被索引。所有元素都是未知的和整数。给定一些A,B,C形式的查询,其中A是起始索引,B是结束索引,C是A和B之间所有元素的总和。找出数组的所有元素。例如:

N=4
1, 3, 0
2, 4, 4
     

一个有效的解决方案是:

2, -3, 1, 6
     

约束:

1<=A<=B<=N, 2<=N<=65000, C<=1000000000
     

接受满足给定标准的任何解决方案,并假设有足够的查询来查找所有元素。

1 个答案:

答案 0 :(得分:2)

解决这个问题的一种方法是将问题视为一系列联立方程。每个求和最多可以给出一个最多n个变量的线性方程,所以如果你能找到一个具有整数值的方程的解,你应该全部设置。

对具有k个不同约束的一系列n个变量使用高斯消元(假设n = O(k))O(k 3 )时间对期望(假设系统条件良好) )。从那里,找到整数解决方案应该很容易;找到任何一个解决方案向量的公分母并乘以它。

希望这有帮助!