題目大意:在一條數軸上有n家商店,它們的座標分別為 a[1]~a[n]。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。
題目分析:中位數應用最經典的問題之一了,我們設應該將貨倉建立在座標x處,現在x左邊有p家商店,x右邊有q家商店,我們需要盡可能的讓p=q才是最優解
這樣問題就轉換成了求整個序列的中位數了
然後說一下藍書上給出的結論吧(對於序列a已經排好序):
當n為奇數時,貨倉建在a[n/2+1]處最優
當n為偶數時,貨倉建在a[n/2]~a[n/2+1]之間(包含端點)的任意位置都是最優
這樣一來,為了方便書寫,我們不妨設a[(n+1)/2]作為中位數,就能都滿足奇偶的兩個條件了,也不用分類討論了
**:
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int n=1e5+100;
int a[n];
int main()
CH0501 貨倉選址
題意 在一條數軸上有 n nn 家商店,它們的座標分別為 a 1 a n a 1 sim a n a 1 a n 現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。思路分析 把 a 1 a n a 1 si...
CH0501 貨倉選址(第k小數)
描述 在一條數軸上有n家商店,它們的座標分別為 a 1 a n 現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行乙個整數n,第二行n個整數a 1 a n 輸出格式 乙個整數,表示距離之和的...
貨倉選址(中位數)
描述 在一條數軸上有n家商店,它們的座標分別為 a 1 a n 現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行乙個整數n,第二行n個整數a 1 a n 輸出格式 乙個整數,表示距離之和的...