51Nod 1096 距離之和最小

2021-08-11 12:31:40 字數 458 閱讀 9578

題目大意:中文題

解題思路:把所有數排序以後,找中位數,既是所需要找到點。注意要long long 儲存結果證明如下:

我們可以想象現在x軸上有n個點,我們設定的目標點在最左邊,那麼可以算出距離總和ans。

目標點往右移動1,相當於ans+左邊點數-右邊點數。

那麼目標點到達正**(或**兩點之間)前,ans單調遞減(左邊點《右邊點),之後ans又單調遞增(左 邊點》右邊點)

由此,目標點為中位數點時,距離之和最小。(來自:

ac**:

#include #include using namespace std;

int main()

{ int n, a[10005];

long long sum;

while (scanf("%d", &n)!=eof){

sum = 0;

for (int i=0; i

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 距離之和最小

原題鏈結 原題 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...

51nod 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 output 輸出最小距離之...