Gym 2009-2010 ACM ICPC Southwestern European Regional Programming Contest (SWERC 2009) A. Trick or Treat (三分)
阿新 • • 發佈:2020-07-24
-
題意:在二維座標軸上給你一堆點,在x軸上找一個點,使得該點到其他點的最大距離最小.
-
題解:隨便找幾個點畫個圖,不難發現,答案具有凹凸性,有極小值,所以我們直接三分來找即可.
-
程式碼:
int n; long double x[N],y[N]; long double check(long double s){ long double res=0; long double tmp; for(int i=1;i<=n;++i){ tmp=sqrt((s-x[i])*(s-x[i])+(y[i]*y[i])); if(res<tmp) res=tmp; } return res; } int main() { while(scanf("%d",&n)!=EOF){ if(n==0) break; for(int i=1;i<=n;++i){ scanf("%Lf %Lf",&x[i],&y[i]); } long double l=-200000,r=200000; long double lmid,rmid; while(l+eps<r){ lmid=l+(r-l)/3; rmid=r-(r-l)/3; if(check(lmid)<check(rmid)) r=rmid; else l=lmid; } printf("%Lf %Lf\n",rmid,check(lmid)); } return 0; }