貪心問題,一般就是乙個思維題,那麼下面這個問題用到乙個小小的知識,在數軸上有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 排序後,當 ...