ACWing 104 貨倉選址

2021-10-20 09:26:39 字數 1509 閱讀 3859

在乙個數軸上有n

nn家商店,座標分別是a1∼

na_

a1∼n

​,需要在數軸上建立乙個倉庫,使得所有商店到這個倉庫的距離總和最小。問這個倉庫應該建在何處,返回最小的距離總和。

輸入格式:

第一行輸入整數n

nn。第二行n

nn個整數a1∼

an

a_1\sim a_n

a1​∼an

​。輸出格式:

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

資料範圍:

1 ≤n

≤100000

1\le n\le 100000

1≤n≤10

0000

0 ≤a

i≤

40000

0\le a_i\le 40000

0≤ai​≤

4000

0 設倉庫建在x

xx這個位置,令f(x

)=∑∣

x−ai

∣f(x)=\sum |x-a_i|

f(x)=∑

∣x−a

i​∣,那麼f′(

x)=∣

∣−∣∣

f'(x)=|\|

f′(x)=

∣∣−∣

∣,可以看出,當x

xx從−

∞-\infty

−∞到+

∞+\infty

+∞變化的時候,f』f』

f』由負到正,所以f(x

)f(x)

f(x)

先降後公升,而f(x

)f(x)

f(x)

取最小應當是在f′(

x)=0

f'(x)=0

f′(x)=

0的時候,即x

xx取中位數即可。求中位數可以用快速選擇演算法,參考**如下:

#include

using

namespace std;

const

int n =

100010

;int a[n]

;int

quick_select

(int l,

int r,

int idx)

}while

(i <= j);if

(idx <= j)

return

quick_select

(l, j, idx)

;else

if(idx >= i)

return

quick_select

(i, r, idx)

;else

return a[idx];}

intmain()

平均時間複雜度o(n

)o(n)

o(n)

,平均空間o

(log⁡n

)o(\log n)

o(logn)。

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。輸出格式 輸出乙個整數,表示距離之和的最小值...