题解:如果给你一条线段(左右端点设为A,B), 那么在这条线上的任意一点到A B距离之和是一个定值, 然后如果再这条线段内在任意确定一个定点C, 那么这条线段上再任意取一个点,这个点到 A B C距离最小的点是和C点重合的位置, 因为AB距离为定制。
所以给你一堆点在一条直线上, 那么所有距离之和小就是最中间的点。
代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 double x[1000005],y[1000005]; 4 int main() 5 { 6 int t; 7 while(~scanf("%d",&t)&&t) 8 { 9 for(int i = 0; i < t; i++) 10 scanf("%lf%lf",&x[i],&y[i]); 11 sort(x,x+t); 12 sort(y,y+t); 13 printf("%.2f %.2f\n",x[(t+1)/2],y[(t+1)/2]); 14 } 15 return 0; 16 }