我們寫一下就可以發現:
假設符合要求的點的座標為(x, y, z); 那麼ans = |x - x1| + |y - y1| + |z - z1| + |x - x1| + |y - y2| + |z - z2|……
由於求的是曼哈頓距離,x 和 y z座標之間沒有相互制約關係,所以讓x y z 分別為xi yi zi(i = 1 2 3 ……)的中間點就好了
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int maxn = 1e5;
ll x[maxn], y[maxn], z[maxn];
int main()
sort(x + 1, x + n + 1);
sort(y + 1, y + n + 1);
sort(z + 1, z + n + 1);
for(int i = 1; i <= n; i++)
}printf("%lld\n", ans);
return
0;}
51nod 1096 距離之和最小
1096 距離之和最小 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 x軸上有n個點,求x軸上一點使它到這n個點的距離之和最小,輸出這個最小的距離之和。input 第1行 點的數量n。2 n 10000 第2 n 1行 點的位置。10 9 p i 10 9 ou...
51Nod 1096 距離之和最小
題目大意 中文題 解題思路 把所有數排序以後,找中位數,既是所需要找到點。注意要long long 儲存結果證明如下 我們可以想象現在x軸上有n個點,我們設定的目標點在最左邊,那麼可以算出距離總和ans。目標點往右移動1,相當於ans 左邊點數 右邊點數。那麼目標點到達正 或 兩點之間 前,ans單...
51Nod 1096 距離之和最小
原題鏈結 原題 x軸上有n個點,求x軸上一點使它到這n個點的距離之和最小,輸出這個最小的距離之和。input 第1行 點的數量n。2 n 10000 第2 n 1行 點的位置。10 9 pii 10 9 output 輸出最小距離之和 sample input5 1 3079 sample outp...