数学题 ,因为只能正方向行走,所以总距离dist=sum{|x-xi|+|y-yi|,i=1..n}
所以x为xi中的中位数,y为yi中的中位数时,总距离最小
代码:
#include <iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000005;
double xp[maxn]; // x position
double yp[maxn]; // y position
int main()
{
int n;
double x,y;
while(scanf("%d",&n)!=EOF){
if(n==0)break;
for(int i=0;i<n;i++){
scanf("%lf%lf",&xp[i],&yp[i]);
}
sort(xp,xp+n);
sort(yp,yp+n);
if(n%2==0){
x=(xp[n/2]+xp[n/2-1])/2.0;
y=(yp[n/2]+yp[n/2-1])/2.0;
}else{
x=xp[n/2];
y=yp[n/2];
}
printf("%.2lf %.2lf\n",x,y);
}
return 0;
}

289

被折叠的 条评论
为什么被折叠?



