Timus 1640
#include <iostream>
using namespace std;
#define MAXN 100
typedef struct point_st {
double x,y;
} *point_t;
point_st points[MAXN] = { 0 };
int main() {
int N,i,j;
double d,max_d_sqt = -1,x,y;
point_st pointA, pointB;
cin>>N;
for(i=0;i<N;i++)
cin>>points[i].x>>points[i].y;
for(i=0;i<N;i++) {
d = points[i].x * points[i].x + points[i].y * points[i].y;
if(max_d_sqt < d) {
max_d_sqt = d;
pointA = points[i];
}
}
printf("0 0 %.12lf\n", pow(max_d_sqt,0.5));
return 0;
}
题目就是要求一点,以该点为圆心作一个半径R的圆,至少有一个已给出的点在该圆上,而其他点则在该圆内。
很坑爹的一题,首先是主角要传送的地点竟然可以是原来的点,即不动
而且,题目给出点坐标的绝对值不大于1000,但冰墙的半径却可以是不大于10000,那就简单了。
如果条件苛刻点,可以考虑求出所有点构成的线段的中点,然后对所有中点求出到每一点的距离,选择最大的距离作为半径,该中点作为圆心。