我有一个3d点阵列。每个点都有一个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,min为-76。这也适用于yi和zi。所以总可能的组合是153 * 153 * 153。现在在查询中,我们必须计算特定组合在数组中出现的次数,并且只解析该组合的总和一次。问题减少到找到(xi-xj,yi-yj,zi-zj)的特定组合的次数。有人可以从这里领先吗?我怀疑我们可以在这里使用快速傅立叶变换。我之前见过他们已经习惯了这些问题。但我不知道如何开始