题目:
输入输出样例:
题解:
整个题我们使用暴力的方法进行解决。
我们一开是遍历每个点。将每个点都当作是圆的中心。之后我们把每一个点到圆心的距离求得,取最大值。
我们将每一个点作为圆心的最大值 求得最小值,我们就可以求得整个题目要求的最小值和圆心的坐标。
之后我们将结果记录输出即可。
完整代码:
#include<iostream>
#include <cstring>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
struct node
{
long long x,y;
bool operator < (const node &n)
{
return x==n.x ? y<n.y : x<n.x;
}
};
int main()
{
int n;
scanf("%d",&n);
long long maxx=1e15;
node dian[n];
for(int i=0;i<n;i++)
{
cin>>dian[i].x>>dian[i].y;
}
sort(dian,dian+n);
node a;
for(int i=0;i<n;i++)
{
long long maxxx=0;
for(int j=0;j<n;j++)
{
if(j==i)
continue;
else
{
long long b=abs(dian[i].x-dian[j].x);
long long c=abs(dian[i].y-dian[j].y);
long long dis=b*b+c*c;
maxxx=max(maxxx,dis);
}
}
if(maxxx<maxx)
{
maxx=maxxx;
a.x=dian[i].x;
a.y=dian[i].y;
}
}
printf("%lld.00 %lld.00\n",a.x,a.y);
printf("%lld.00\n",maxx);
return 0;
}
反思:
对于每一个题,我们首先要去计算时间限制所能够允许的时间复杂度。并且尽可能使用耗时少的操作。
同时要注意数据范围,不要让数据因为范围不够被截取。