/*
找出乙個點使得這個店到n個點的最長距離最短,即求最小覆蓋圓的半徑
用乙個點往各個方向擴充套件,如果結果更優,則繼續以當前步長擴充套件,否則縮小步長
*/#include#include#includeconst 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(maxxmax) xmax=p[i].x;
if(p[i].y>ymax) ymax=p[i].y;
}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;itans)
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;
}
乙個退火演算法求點到所有點的距離之和最小
題意 給定n個點,在範圍內找到x軸上的乙個點,使得n個點到這個點的距離之和最小 模擬退火法 模擬退火的過程 1 找到這些點所在的範圍,用兩個點框定 2 在這個範圍內生成num個點 num自定 3 對於每個生成的點i,在其周圍生成num個點,一旦有點優於i,則替換。4 縮小範圍d,若d 精度,退出,否...
使用Java求某點到直線上的投影點
求直線外一點到直線上的投影點 param pline 線上一點 param k 斜率 param pout 線外一點 param pproject 投影點 public static void getprojectivepoint pointf pline,double k,pointf pout,...
N個點求最大斜率
面試題 平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點 斜率不存在的情況不考慮 時間效率越高越好。分析 3個點a,b,c,把它們的按x座標排序。假設排序後的順序是abc,那麼有兩種情況 1.abc共線,則k ab k bc k ac 2.abc不共線,則abc將形成乙個三...