找出乙個點使得這個店到n個點的最長距離最短,即求最小覆蓋圓的半徑
用乙個點往各個方向擴充套件,如果結果更優,則繼續以當前步長擴充套件,否則縮小步長
view code
#include#include
#include
const
double pi = acos(-1.0);
struct point p[1010];
int n;
point mid,tmid;
double r,xmin,ymin,xmax,ymax;
double ans,tans;
double dis(point a, point b)
void solve(double x,double y)
if(maxint main()
mid.x=(xmin+xmax)/2;
mid.y=(ymin+ymax)/2;
tmid=mid;
r=sqrt((xmax-xmin)*(xmax-xmin)+(ymax-ymin)*(ymax-ymin))/2;
for(i=0;idouble tmp=dis(mid,p[i]);
if(tmp>tans)
tans=tmp;
}ans=tans;
while(1)
if(fabs(ans-tans)<0.01&&r<0.0001) break;
if(tanselse r*=0.7;
}printf("
(%.1lf,%.1lf).\n
", mid.x, mid.y);
printf("
%.1lf\n
", sqrt(ans));
}return
0;}
hdu3007 最小覆蓋圓問題
題目 buried memory 最小圓覆蓋,很經典的問題。題目大概是,平面上n個點,求乙個半徑最小的圓,能夠覆蓋所有的點。如果要求乙個最小覆蓋圓,這個圓至少要由三個點確定。有一種演算法就是任意取三個點作圓,然後判斷距離圓心最遠的點是否在圓 內,若在,則完成 若不在則用最遠點更新這個圓。這裡不仔細介...
最小覆蓋圓的增量演算法
題意 給出平面上的一些點,要求用乙個最小的圓,把所有的點包圍起來。最小覆蓋圓,增量法 假設圓o是前i 1個點得最小覆蓋圓,加入第i個點,如果在圓內或邊上則什麼也不做。否,新得到的最小覆蓋圓肯定經過第i個點。然後以第i個點為基礎 半徑為0 重複以上過程依次加入第j個點,若第j個點在圓外,則最小覆蓋圓必...
hdu 2215 最小覆蓋圓 目前WA
思路明顯錯了 最小覆蓋圓必定是某三個頂點的外接圓。先求凸包再列舉。include stdafx.h include math.h include using namespace std define abs n x x 0?x x int n,stack top struct node m stac...