郵局選址問題

2021-06-16 22:48:51 字數 1099 閱讀 1616

在乙個按照東西和南北方向劃分成規整街區的城市裡,

n個居民點散亂地分布在不同的街區中。用

x 座標表示東西向,用

y座標表示南北向。各居民點的位置可以由座標

(x,y)

表示。街區中任意2 點

(x1,y1)

和(x2,y2)

之間的距離可以用數值

|x1-x2|+|y1-y2|

度量。居民們希望在城市中選擇建立郵局的最佳位置,使

n個居民點到郵局的距離總和最小。

程式設計任務:

給定n

個居民點的位置

,程式設計計算

n 個居民點到郵局的距離總和的最小值。

輸入由多組測試資料組成。

每組測試資料輸入的第

1 行是居民點數n,

1≤n≤

10000

。接下來

n 行是居民點的位置,每行

2 個整數x 和

y,-10000≤x

,y≤10000。

對應每組輸入,輸出的第

1 行中的數是

n 個居民點到郵局的距離總和的最小值。

5

1 22 2

1 33 -2

3 3

解題思路:由題意街區中任意2 點

(x1,y1)

和(x2,y2)

之間的距離可以用數值

|x1-x2|+|y1-y2|

度量容易得知,可分別將x、y座標排序求其中位數,即中間的點是到各個居民點最近的,設中位數為d,則個居民點到郵局的距離為|d-x[i](或y[i])|,最後累加求和。

#include #include #include int x[20000];

int y[20000];

int comp(const void *a,const void *b)

int main()

qsort(x,t,sizeof(int),comp);

qsort(y,t,sizeof(int),comp);

for(int i=0;iprintf("%d\n",sum);

}}

郵局選址問題

描述 在乙個按照東西和南北方向劃分成規整街區的城市裡,n個居民點散亂地分布在不同的街區中。用x 座標表示東西向,用y座標表示南北向。各居民點的位置可以由座標 x,y 表示。街區中任意2 點 x1,y1 和 x2,y2 之間的距離可以用數值 x1 x2 y1 y2 度量。居民們希望在城市中選擇建立郵局...

郵局選址問題 分治

問題描述 在乙個按照東西和南北方向劃分成規整街區的城市裡,n個居民點散亂地分布在不同的街區中。用x座標表示東西向,用y座標表示南北向。各居民點的位置可以由座標 x,y 表示。要求 為建郵局選址,使得n個居民點到郵局之距離的總和最小。以檔案輸入形式進行測試。思路 運用分治思想。將居民點的座標從輸入檔案...

動態規劃 郵局選址問題

題目 有一條公路經過 個村莊,每乙個村莊都處在整數的座標點上 這裡假設公路為數軸 規劃在這條公路上建立 個郵局,每乙個郵局都要建在某個村莊上,要求讓不同村莊的人到郵局要走的總路程最小。分析 用動態規劃的辦法,先把輸入的村莊排序,然後計算只有乙個郵局的情況,然後再根據已有的資訊,計算p p 2 個郵局...