NYOJ 7 街區最短路徑問題(數學問題)

2021-07-05 20:39:54 字數 1033 閱讀 7018

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

乙個街區有很多住戶,街區的街道只能為東西、南北兩種方向。

住戶只可以沿著街道行走。

各個街道之間的間隔相等。

用(x,y)來表示住戶坐在的街區。

例如(4,20),表示使用者在東西方向第4個街道,南北方向第20個街道。

現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。

求現在這個郵局應該建在那個地方使得所有住戶距離之和最小;

輸入第一行乙個整數n<20,表示有n組測試資料,下面是n組資料;

每組第一行乙個整數m<20,表示本組有m個住戶,下面的m行每行有兩個整數0

輸出每組資料輸出到郵局最小的距離和,回車結束;

樣例輸入

2

31 1

2 11 2

52 9

5 20

11 9

1 11 20

樣例輸出

2

44

街區最短路徑問題,猛一看好像是乙個搜尋或者是最小生成樹之類的,但是仔細考慮一下發現街區的範圍並不清楚,因此如果用搜尋的話邊界是乙個主要的問題,因此就有可能是思路出錯了,就可以換種思路考慮一下,可以首先想一下如果是就一條東西方向的街道的話,那麼最好的位置是在哪,相信這個並不難算出,在所有住戶最中間的兩個住戶之間最好,這道題又給出了街道只有東西和南北方向,所以 最佳位置就是不僅在東西位置的最中間而且在南北位置的最中間的兩家住戶(注意:這裡說的最中間不是地理位置的上的中間,而是住戶數目中最中間的兩個或一家),所以一次算出距離之和就行! 

附上**:

#include#include#includeusing namespace std;

int x[110],y[110];

int s;

int main()

sort(x,x+m);

sort(y,y+m); // x,y 都從小到大排序

for(i=0;i

nyoj 7 街區最短路徑問題 數學

找出橫縱座標的中位數,怎麼找 先對x排序找x的中位數x0,再對y排序找y的中位數y0 最後統計各點到中位數點 x0,y0 的總距離 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間...

nyoj 7 街區最短路徑問題 數學

找出橫縱座標的中位數,怎麼找 先對x排序找x的中位數x0,再對y排序找y的中位數y0 最後統計各點到中位數點 x0,y0 的總距離 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描寫敘述 乙個街區有非常多住戶,街區的街道僅僅能為東西 南北兩種方向。住戶僅僅能夠沿著街道行走。各個街...

NYOJ 7 街區最短路徑問題

描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使得各個住戶到郵局的距離之和最少。求現在這個郵局應該建在那個地方使得...