CH 0501 貨倉選址 中位數

2021-10-01 03:18:34 字數 718 閱讀 8807

題目大意:在一條數軸上有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 輸出格式 乙個整數,表示距離之和的...