題意:在一條數軸上有 n
nn 家商店,它們的座標分別為 a[1
]∼a[
n]
a[1] \sim a[n]
a[1]∼a
[n]。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。
思路分析:
把 a [1
]∼a[
n]
a[1] \sim a[n]
a[1]∼a
[n] 排序,設貨倉建在 x
xx 座標處,x
xx 的左側有 p
pp 家商店,右側有 q
qq 家商店。
因此,貨倉應該建在中位數處,即把 a[]
a[\ ]
a[] 排序後,當 n
nn 為奇數時,貨倉建在 a[(
n+1)
/2
]a[(n +1)/2]
a[(n+1
)/2]
處最優;當 n
nn 為偶數時,貨倉建在 a[n
/2]∼
a[n/
2+1]
a[n/2] \sim a[n/2 + 1]
a[n/2]
∼a[n
/2+1
] 之間的任何位置都是最優解。
ac**:
#include
#include
#include
using
namespace std;
const
int n =
100010
;int n;
int q[n]
;int
main()
CH 0501 貨倉選址 中位數
題目大意 在一條數軸上有n家商店,它們的座標分別為 a 1 a n 現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。題目分析 中位數應用最經典的問題之一了,我們設應該將貨倉建立在座標x處,現在x左邊有p家...
CH0501 貨倉選址(第k小數)
描述 在一條數軸上有n家商店,它們的座標分別為 a 1 a n 現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行乙個整數n,第二行n個整數a 1 a n 輸出格式 乙個整數,表示距離之和的...
貨倉選址(貪心)
題目鏈結 在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個整數a1 an。輸出格式 輸出乙個整數,表示距離之...