有n
个点,每个点都有两个属性:
1。位置(来自轴)
2。吸引力值(整数)
两点之间的吸引力A& B由下式给出:
Attraction_force(A, B) = (distance between them) * Max(Attraction_val_A, Attraction_val_B);
求出所有可能的点对之间所有力的总和?
我试过在所有对之间计算和增加力
for(int i=0; i<n-1; i++) {
for(int j=i+1; j<n; j++) {
force += abs(P[i].pos - P[j].pos) * max(P[i].attraction_val, P[j].attraction_val);
}
}
示例:
Points P1 P2 P3
Points distance: 2 3 4
Attraction Val: 4 5 6
Force = abs(2 - 3) * max(4, 5) + abs(2 - 4) * max(4, 6) + abs(3 - 4) * max(5, 6) = 23
但这需要 O(n ^ 2)时间,我想不出有办法进一步减少它!!
答案 0 :(得分:3)
解决方案的方案:
我为了发明这个解决方案而做出的直观观察:
max
和modulo(距离)。max
。答案 1 :(得分:-1)
算法:
O(N 2 )
是最佳的,因为您需要所有可能对之间的实际距离。