貨倉選址 貪心

2021-10-09 17:46:53 字數 872 閱讀 4083

貪心問題,一般就是乙個思維題,那麼下面這個問題用到乙個小小的知識,在數軸上有n個點,在數軸找一點x,使得所有點到x點距離之和最小

結論:當n為奇數時,x為數軸上點的中值點

當n為偶數時,x為數軸上點的兩個中值點中間區域的任何乙個點

證明:當n為奇數時,x選取中值點右邊任何乙個點,距離中值點距離為len,設每乙個點到中值點的距離為ai,那麼中值點左邊的點a1+len,a2+len,a3+len ... a[n / 2]+len,同理,中值點右邊的值都會ai-x,但是中值點會0 + len,故當len取0的時候,距離之和最小。

當n為偶數時同理

104 貨倉選址

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

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

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

輸入格式

第一行輸入整數n。

第二行n個整數a1~an。

輸出格式

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

資料範圍

1≤n≤100000

輸入樣例:

46 2 9 1

輸出樣例:

12

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

100015

;int res,location[n]

,n;int

main()

貨倉選址(貪心)

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

貨倉選址問題

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

104 貨倉選址

把a 1 a n 排序,設貨倉建在 x 座標處,x 左側的商店有 p 家,右側的商店有 q 家。若 p q 則把貨倉的選址向右移動 1 單位距離,距離之和就會減小 q p。同理,若 p q 則貨倉的位置想左移動會使距離之和變小。當 p q 時為最優解。因此貨倉應該建在中位數處,即把 a 排序後,當 ...