洛谷P1742 最小圓覆蓋

2021-09-12 08:19:41 字數 1117 閱讀 1593

給出n個點,讓你畫乙個最小的包含所有點的圓。

輸入格式:

先給出點的個數n,2<=n<=100000,再給出座標xi,yi.(-10000.0<=xi,yi<=10000.0)

輸出格式:

輸出圓的半徑,及圓心的座標,保留10位小數

輸入樣例#1:複製

6

8.0 9.0

4.0 7.5

1.0 2.0

5.1 8.7

9.0 2.0

4.5 1.0

輸出樣例#1:複製

5.0000000000

5.0000000000 5.0000000000

5.00 5.00 5.0

模擬,就是三點確定乙個圓,然後判斷剩下的點是不是在圓內,不是的話找三個圓外的點,構成乙個新的圓,這個新的圓一定會比原來的圓大,注意找的時候不是一下找三個點,因為我們要求的是最小的圓,找到第乙個點的時候,直接把原來的圓的半徑擴大到這個點,第二個也是,但是第三個需要特判一下,因為如果直接把半徑擴大到第三個點的話,就有可能直接把上面兩個點直接包含了,而我們要求的是最小的圓,所以最後一次找到這個三個點時,直接三點定圓,就一定會包含所有的點

#includeusing namespace std;

struct circle ;

struct point ;

point poi[100005];

int n;

double dis(point a,point b)//計算兩點之間的距離函式

circle turn(point a,point b,point c)//三點確定乙個圓

point midpoint(point a,point b)//計算中點

; return t;

}int main()

; r=dis(poi[i],temp);

}} }

printf("%.10lf\n%.10lf %.10lf\n",r,temp.x,temp.y);

return 0;

}

洛谷 P1742 最小圓覆蓋

給出n個點,讓你畫乙個最小的包含所有點的圓。這個問題實際上是找出三個點確定的乙個圓,能包含其他所有點。與三點共圓有密切的關係,先來說三點共圓。三點共圓有兩種情況 三個點共線或不共線,共線則兩個最遠點構成直徑,不共線則圓為三角形外接圓 重點考慮外接圓情形,班經用正弦定理是比較好找的,其實難度是找圓心,...

P1742 最小圓覆蓋

給出n個點,讓你畫乙個最小的包含所有點的圓。先給出點的個數n,2 n 100000,再給出座標xi,yi.10000.0 xi,yi 10000.0 輸出圓的半徑,及圓心的座標,保留10位小數 6 8.0 9.0 4.0 7.5 1.0 2.0 5.1 8.7 9.0 2.0 4.5 1.05.00...

P1742 最小圓覆蓋(計算幾何)

體驗過 o n 3 過 10 5 嗎?快來體驗一波當 wys 的快感吧 qaq 設 begina1 x b1 y c1 a2 x b2 y c2 end 其中 a1,a2,b1,b2,c1,c2 為已知量 由 式得 x frac 帶入 式並化簡得 y frac 分子分母同時乘以 a2 得 y fra...