记录一个菜逼的成长。。
题目链接
题目大意:
给你n个点的经纬度,求一个点到其他点的距离的最大值里是最小。
具体解释
需要用到经纬度求距离的公式。
当个模板好了。
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int INF = 0x3f3f3f3f;
const double pi = acos(-1);
const int maxn = 1000 + 10;
struct node{
double x,y;
}a[maxn];
double cal(double d)
{
return d * pi / 180.0;
}
int main()
{
int n;
while(~scanf("%d",&n)){
for( int i = 0; i < n; i++ ){
scanf("%lf%lf",&a[i].x,&a[i].y);
}
double dis = INF * 100;
double x,y;
for( int i = 0; i < n; i++ ){
double tmp = 0;
for( int j = 0; j < n; j++ ){
if(i != j){
double t1 = cal(a[i].x),t2 = cal(a[j].x);
double c = t1 - t2;
double b = cal(a[i].y) - cal(a[j].y);
double s = 2 * asin(sqrt(pow(sin(c/2),2) + cos(t1) * cos(t2) * pow(sin(b/2),2)));
s = s * 6378.137;
tmp = max(tmp,s);
}
}
if(tmp < dis){
dis = tmp;
x = a[i].x;
y = a[i].y;
}
}
printf("%.2f %.2f\n",x,y);
}
return 0;
}