時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:4
描寫敘述
乙個街區有非常多住戶,街區的街道僅僅能為東西、南北兩種方向。
住戶僅僅能夠沿著街道行走。
各個街道之間的間隔相等。
用(x,y)來表示住戶坐在的街區。
比如(4,20),表示使用者在東西方向第4個街道,南北方向第20個街道。
如今要建乙個郵局,使得各個住戶到郵局的距離之和最少。
求如今這個郵局應該建在那個地方使得全部住戶距離之和最小;
輸入
第一行乙個整數n<20,表示有n組測試資料,以下是n組資料;
每組第一行乙個整數m<20,表示本組有m個住戶,以下的m行每行有兩個整數0
輸出每組資料輸出到郵局最小的距離和,回車結束;
例子輸入
231 1
2 11 2
52 9
5 20
11 9
1 11 20
例子輸出
244
分析:因為僅僅能上下左右通路,所以先把橫豎座標分開,分別求他們的最值;
1、從平面一維分析,如果座標軸上有1、2、3……n個點,目標點在x。
2、先求點1和n到x的距離之和。非常明顯,x必須在1和n之間。
3、再求點2和n-1到x的距離之和。非常明顯,x必須在2和n-1之間……
4、如此下去,終於x的範圍不斷縮小,最後的位置,就是中位數的位置了。
#include#includeusing namespace std;int main()
; int b[110]=;
scanf("%d",&t);
while(t--)
{ sum=0;
scanf("%d",&n);
for(i=0;i
NYOJ 街區最短路徑問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使...
NYOJ 街區最短路徑問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局,使...
nyoj 街區最短路徑問題
時間限制 3秒 記憶體限制 128兆 44 次提交 30 次通過 題目描述 乙個街區有很多住戶,街區的街道只能為東西 南北兩種方向。住戶只可以沿著街道行走。各個街道之間的間隔相等。用 x,y 來表示住戶坐在的街區。例如 4,20 表示使用者在東西方向第4個街道,南北方向第20個街道。現在要建乙個郵局...