我有一个三维点的数组。每个点都有x、y和z坐标。数组的最大大小可以是777777。我有Q个查询,每个查询都提供四个数字A、B、C、D。对于每个查询,我必须输出以下总和。
Q <=77
1 <= A, B, C <=77
1 <= Xi, Yi, Zi <=77
1 <= Di <= 777
N <= 777777
我已经完成的工作:对于每个查询,使用两个嵌套循环计算给定的总和,导致复杂度为O(Q*N^2)。有没有更好的方法来计算它?
编辑: 我确定的是这不是一个几何问题。xi-xj的最大值为76,最小值为-76。yi和zi也是如此。因此,总共可能的组合数为153*153*153。现在,在一个查询中,我们必须计算数组中特定组合出现的次数,并仅对该组合解决一次总和。问题转化为找到特定组合(xi-xj,yi-yj,zi-zj)出现的次数。有人能从这里开始吗?我怀疑我们可以在这里使用快速傅里叶变换。我以前见过它们用于这些类型的问题。但我不知道如何开始。