題目大意:給定平面上 n 個點,求最小圓覆蓋
我就是抄了個板而已…
q:為什麼是 o(
n)的
a:(搖頭搖頭搖頭
q:三角形外心怎麼求
a:不知道…
q:學這個有什麼用
a:(一臉懵逼
q:怎麼什麼都不知道→→
a:窩弱嘛tat
怎麼覺得自己又抽了=。=
三角形外心 (我知道泥萌都會。。。
因為到各點距離相等,有 (x
1−x)
2−(y
1−y)
2=(x
2−x)
2+(y
2−y)
2(x2
−x)2
+(y2
−y)2
=(x3
−x)2
+(y3
−y)2
化簡得到2(
x2−x
1)x+
2(y2
−y1)
y=x2
2+y2
2−x2
1−y2
1/a1
x+b1
y=c1
2(x3
−x2)
x+2(
y3−y
2)y=
x23+
y23−
x22−
y22/
a2x+
b2y=
c2 有
⎧⎩⎨x
=c1b
2−c2
b1a1
b2−a
2b1y
=a1c
2−a2
c1a1
b2−a
2b1
#include
#include
#include
#include
#define d double
#define n 505
#define pf(x) (x * x)
using namespace std
;int n;d r;
struct pointe[n],ans;
d dis(point a,point b)
point center(point a,point b,point c);}
void mcc()}}
}int main()
return 0
;}
HDU 3007 最小圓覆蓋
題意 給出平面上的一些點,要求用乙個最小的圓,把所有的點包圍起來。最小覆蓋圓,增量法 假設圓o是前i 1個點得最小覆蓋圓,加入第i個點,如果在圓內或邊上則什麼也不做。否,新得到的最小覆蓋圓肯定經過第i個點。然後以第i個點為基礎 半徑為0 重複以上過程依次加入第j個點,若第j個點在圓外,則最小覆蓋圓必...
hdu3007 最小覆蓋圓問題
題目 buried memory 最小圓覆蓋,很經典的問題。題目大概是,平面上n個點,求乙個半徑最小的圓,能夠覆蓋所有的點。如果要求乙個最小覆蓋圓,這個圓至少要由三個點確定。有一種演算法就是任意取三個點作圓,然後判斷距離圓心最遠的點是否在圓 內,若在,則完成 若不在則用最遠點更新這個圓。這裡不仔細介...
HDU3007 求解最小圓覆蓋 模擬退火?
這次先上 再證明 的可行性,感覺有點不像模擬退火,因為這個 借用的實際上是乙個完全單調的函式 只有乙個極值點,就是說只有乙個低谷,那個點實際上就是答案,就是全域性最優 就不自己寫 了,獻上網上找到的一段 這段 的思路其實就是先找乙個點作為起始點p,然後不斷找到和該點距離最遠的點a,然後將p向a慢慢挪...