acwing 104 貨倉選址(排序不等式)

2022-10-09 03:18:07 字數 1050 閱讀 2440

目錄排序不等式

參考文章

題目傳送門

在一條數軸上有 n 家商店,它們的座標分別為 a1∼an。

現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。

為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。

輸入格式

第一行輸入整數 n。

第二行 n 個整數 a1∼an。

輸出格式

輸出乙個整數,表示距離之和的最小值。

資料範圍

1≤n≤100000

0≤ai≤40000

輸入樣例:

4

6 2 9 1

輸出樣例:
12
假設選乙個點\(x\)

現在有點\(x_1, x_2, x_3, ... , x_, x_n\),首先將其排序

那麼就是求$|x_1 - x| + |x_2 - x| + |x_3 - x| + ... |x_ - x| + |x_n - x| $ 的最小值

我們將它分組:$(|x_1 - x| + |x_n - x|)+ (|x_2 - x|+ |x_ - x|) + ... $

對於\(|a-x| + |b-x| \ge b - a\) 易知,當x位於a,b之間的時候,該和最小,為|a - b|

所以對於上面的分組, \((|x_1 - x| + |x_n - x|)+ (|x_2 - x|+ |x_ - x|) + ... \ge (x_n - x_1) + (x_ - x_2) + ...\)

只需要取x作為\(x_1, x_2, x_3, ... , x_, x_n\)的中位數, \(x = x_\)

#include#include#includeusing namespace std;

const int n = 100010;

int a[n];

int n;

int main()

AcWing 104 貨倉選址

題目描述 在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個整數a1 an。輸出格式 輸出乙個整數,表示距離之...

AcWing 104 貨倉選址

在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個整數a1 an。輸出格式 輸出乙個整數,表示距離之和的最小值...

AcWing 104 貨倉選址

在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個整數a1 an。輸出格式 輸出乙個整數,表示距離之和的最小值...