2 3 1 1 2 1 1 2 5 2 9 5 20 11 9 1 1 1 20
2 44
参考别人思路才AC:
先找横纵坐标的中位数(即邮局位置),然后由于街道只有水平和竖直两个方向,
因此最短距离为各个位置的横纵坐标与邮局的绝对值,近一步化简易得以下代码 。
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[22],b[22];
int test,i,n,sum;
scanf("%d",&test);
while(test--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
sort(a,a+n);
sort(b,b+n);
for(i=0,sum=0;i<n/2;i++)
{
sum+=a[n-1-i]-a[i]+b[n-1-i]-b[i];
}
printf("%d\n",sum);
}
return 0;
}
原文:http://blog.csdn.net/hdd871532887/article/details/41764897