【发布时间】:2015-07-21 10:50:37
【问题描述】:
给定 N 个 (x,y) 形式的点,我们需要计算以下函数:
F(i,j) = ( | X[i] - X[j] | ) * ( | Y[i] - Y[j] | )
计算所有有序对 (i,j) 的 F(i,j) 总和
N
我正在寻找O(N log N) 解决方案。
我最初的想法是按 X 对点进行排序,然后使用 BIT,但我无法制定明确的解决方案。
【问题讨论】:
-
看,如果所有对导致 F(i,j) 的值不同,在 O(N log N) 高度内没有办法做到这一点,请在评论中发布比赛链接.
-
您知道
i = i的所有值都为零。你也知道对称性成立:F(i, j) = F(j, i). -
@duffymo OP 从未说过 i=j 为 0。
-
@Dante - 错字;应该读到 i=i。由于 x[i]-x[i]=y[i]-y[i]=0
-
你能链接到比赛问题吗?
标签: algorithm math data-structures time-complexity