目錄排序不等式
參考文章
題目傳送門
在一條數軸上有 n 家商店,它們的座標分別為 a1∼an。假設選乙個點\(x\)現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。
為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。
輸入格式
第一行輸入整數 n。
第二行 n 個整數 a1∼an。
輸出格式
輸出乙個整數,表示距離之和的最小值。
資料範圍
1≤n≤100000
0≤ai≤40000
輸入樣例:
輸出樣例:4
6 2 9 1
12
現在有點\(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。輸出格式 輸出乙個整數,表示距離之和的最小值...