Keypoint: 结题的重点在于,邮局一定会放在所有对的点的最中间的线段上,但是位置是不确定的,如果放在两点之外,则会有多余出来的路径。东西和南北的完全可以分开考虑
这次的算法使用的vector,当然用一个二维数组,或者两个一位数组就可以结局
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int num,N;
cin>>num;
while(num--)
{
cin>>N;
int position;int sum=0;
vector<int>WestEast;
vector<int>NorthSouth;
while(N--)
{
cin>>position;
WestEast.push_back(position);
cin>>position;
NorthSouth.push_back(position);
}
sort(WestEast.begin(),WestEast.end(),less<int>());
sort(NorthSouth.begin(),NorthSouth.end(),less<int>());
for(int i=0, j=WestEast.size()-1;i<j;i++,j--)
{
sum+=WestEast[j]-WestEast[i]+NorthSouth[j]-NorthSouth[i];
}
cout<<sum<<endl;
}
}