簡單的兩圓關係

2021-09-23 18:54:24 字數 1980 閱讀 1161

題 目地

址\color題目位址

題目位址

有一定總結性的題目,所以我記下來了。

題意就是對於三維中的n個球找到一條最小生成樹,相碰或者想包含的小球視為可以直接到達。所以這樣的情況直接讓邊長為0

00即可。那麼怎麼判斷這樣的情況呢。

d

dd為圓心距,r

rr為大圓半徑,r

rr為小圓半徑

d =r

−r

d=r-r

d=r−

r時,兩圓內切

r −r

<

d

rr-rr−

r<

dr時,兩圓相交

d =r

+r

d=r+r

d=r+

r時,兩圓外切

d

>r+

rd>r+r

d>r+

r時,兩圓不相交

那麼直接求就可以了。唯一需要注意的是:g++

g++g+

+提交的時候double輸出應該用%

f\%f

%f

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define for(i,a,b) for(int i=a;i<=b;i++)

#define eps 1e-8

using

namespace std;

int n;

const

int maxn=

500050

;const

int maxm=

1000100

;struct circle

circle

(double _cx,

double _cy,

double _cz,

double _r):cx

(_cx),cy

(_cy),cz

(_cz),r

(_r)

}a[1010];

struct edge

edge

(int _from,

int _to,

double _dist)

:from

(_from),to

(_to)

,dist

(_dist)};

edge ed[maxm]

;int he[maxn]

,ne[maxm]

,etop=1;

void

insert

(int u,

int v,

double w)

bool vis[maxn]

;double minc[maxn]

;double ans=0;

priority_queuedouble

,int

>

,vectordouble

,int

>

>

,greaterdouble

,int

>

>

>q;

void

prim()

}}}}

double

cal(circle a,circle b)

intmain()

for(i,

1,n)

for(j,i+

1,n)

if(i!=j)

prim()

;printf

("%.3lf\n"

,ans);}

}

求兩圓是否相交

呃.貌似 是很簡單 今天課間休息 照了張相片用q發給爸爸了 另作上傳頭像用 這個實訓第五天了 從第一天helloworld 講到遞迴 呵呵 慢慢來 剛好複習 我們也要求每天寫日誌 我突然想起csdn 也來寫寫 只是隨便寫寫 別砸我 沒人看就算了 有人看就算了 先每天都寫了好多個 隨便來乙個 類cir...

求兩圓交集的面積

設圓c1 半徑為r1 面積為s1 圓cr 半徑為 r2 面積為s2 圓心距離為d 兩圓的交集有3種情況 1 兩圓交面積為0的情況 即 d r1 r2 2 小圓內含含於大圓的情況 即 max r1,r2 d min r1,r2 3 兩圓相交的情況 即 d r1 r2 且 d max r1,r2 對於第...

模版 兩圓相交部分面積

題目 poj 2546 circular area 題意 計算兩圓公共部分面積 260k 0ms g 提交wa,c 提交ac o o include include include include include include using namespace std const double ep...