P1889 士兵站隊

2021-10-07 11:12:26 字數 1320 閱讀 9844

題目描述

在乙個劃分成網格的操場上, n 個士兵散亂地站在網格點上,由整數座標 (x,y) 表示。

士兵們可以沿網格邊上、下左右移動一步,但在同時刻任一網格點上只能有名士兵。

按照軍官的命令,們要整齊地列成個水平佇列,即排成 佇列,即排成 (x,y),(x+1,y), …,(x+n-1,y)。請求出如何選擇 x 和 y 的值才能使士兵們以最少的總移動步數排成一列。

輸入格式

輸入的第一行是乙個整數,代表士兵數 n。

第 2 到 (n + 1) 行,每行 2 個整數,第 (i + 1) 行的整數 xi,yi

​ 代表第 i 個士兵的座標。

輸出格式

輸出一行乙個整數,代表答案。

輸入輸出樣例

輸入 #1

5

1 22 2

1 33 -2

3 3

輸出 #1

說明/提示

對於 100% 的資料,保證 1≤n≤10000,−10000≤x,y≤10000。

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int n,m,t,ans =0;

int a[

10010

],b[

10010];

int x,y;

intmain()

sort

(a+1

,a+1

+n);

sort

(b+1

,b+1

+n);

for(

int i =

1; i <= n; i++

)sort

(a+1

,a+1

+n);

if(n%2==

0)else

for(

int i =

1; i <= n; i++

) cout << ans << endl;

return0;

}

洛谷 P1889 士兵站隊

在乙個劃分成網格的操場上,n個士兵散亂地站在網格點上。由整數 座標 x,y 表示。士兵們可以沿網格邊上 下左右移動一步,但在同時刻任一網格點上只能有名士兵。按照軍官的命令,們要整齊地列成個水平佇列,即排成 佇列,即排成 x,y x 1,y x n 1,y 如何選擇 x 和y的值才能使 士兵們以最少的...

士兵站隊問題

問題描述 在乙個劃分成網格的操場上,n個士兵散亂地站在網格點上,網格點由整數座標 x,y 表示。士兵們可以沿網格邊上 下 左 右移動一步,但在同一時刻任一網點上只能有一名士兵。按照軍官的命令,士兵們要整齊地列成乙個水平佇列,即排列成 x,y x 1,y x n,y 如何選擇x和y的值才能使士兵們以最...

士兵站隊問題

題解 首先已知縱向移動可以直接通過求中位數得到 那麼問題就是橫方向移動了 我們假設第一位士兵站的位置是k,因為x從x1開始,那麼我們假設成起始位置為k 1吧 不懂接著看完你就懂了 那麼 第二位士兵的位置是 k 2,接著是k 3,k 4,k n 所以,士兵橫向 即平行於y軸方向 移動的距離為 x1 k...