題目
NOIP2012模擬試題
給定
分析
首先枚舉一個點
取
然後由於要求面積最小,所以半徑最小,
然後
時間複雜度:
空間複雜度:
代碼
#include <bits/stdc++.h>
using namespace std;
const int N=1240;
const double INF=1e10;
const double Pi=3.1415926535;
int n;
struct Point
{
double x,y;
}black[N];
double r,rr=INF;
inline int read(void)
{
int s=0; char c=getchar();
for (;!isdigit(c);c=getchar());
for (;isdigit(c);c=getchar()) s=s*10+c-'0';
return s;
}
inline double dis(Point pa,Point pb)
{
return sqrt(pow(pa.x-pb.x,2)+pow(pa.y-pb.y,2));
}
int main(void)
{
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%lf%lf",&black[i].x,&black[i].y);
for (int i=1;i<=n;i++)
{
r=0; for (int j=1;j<=n;j++) r=max(r,dis(black[i],black[j]));
rr=min(rr,r);
}
printf("%0.4lf\n",Pi*pow(rr,2));
return 0;
}