把a[1]~a[n]
排序,設貨倉建在 x 座標處,x 左側的商店有 p 家,右側的商店有 q 家。若 p < q ,則把貨倉的選址向右移動 1 單位距離,距離之和就會減小 q - p。同理,若 p > q ,則貨倉的位置想左移動會使距離之和變小。當 p = q 時為最優解。
因此貨倉應該建在中位數處,即把 a 排序後,當 n 為奇數時,貨倉建在 a[(n+1)/2] 處最優;當 n 為偶數時,貨倉建在 a[n/2]~a[n/2+1] 之間的任何位置都是最優解。
#includeusing namespace std;
const int n=100100;
int a[n],n,i,ans,sum;
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。輸出格式 輸出乙個整數,表示距離之和的最小值...