題目描述
在乙個劃分成網格的操場上, 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 說明/提示1 22 2
1 33 -2
3 3
對於 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...