三分法:用于凸性/凹形函数求最值
二分法:用于单调函数求满足某边界条件的最值
本题以 f(x)表示坐标(x,0)与各基地的最大距离,函数图像大致为:
关于区间划分:
int n,x[MAXN],y[MAXN];
double check(double mid)
{
double mxv=0;
rpp(i,n)
{
double tmp=sqrt(y[i]*y[i]+(x[i]-mid)*(x[i]-mid));
mxv=max(mxv,tmp);
}
return mxv;
}
double tsearch(double left,double right)
{
double lmid,rmid;
for(int i=0;i<100;++i)//控制精度
{
lmid=left+(right-left)/2;
rmid=lmid+(right-lmid)/2;
if(check(lmid)>check(rmid)) left=lmid;
else right=rmid;
}
return lmid;
}
signed main()
{
cin>>n;
rpp(i,n) cin>>x[i]>>y[i];
double ans=tsearch(-10000,10000);
printf("%.4f",check(ans));
return 0;
}