球體相交體積模板 牛客練習賽41 B 球的體積並

2021-09-11 17:53:10 字數 912 閱讀 7323

某天lililalala正在玩一種奇妙的吃雞遊戲--因為在這個遊戲裡會同時有兩個圓形安全區(他們可能相交)。

lililalala覺得求圓的面積並太簡單了,所以想把這個問題公升級一下。

現在在三維空間裡有 2 個球形安全區,分別用四元組  和 表示,其中  r1、r2 r1、r2表示球半徑, (x1,y1,z1) (x1,y1,z1)和 (x2,y2,z2) (x2,y2,z2)表示球心

lililalala想知道安全區的總體積是多少?即求這兩個球的體積並。

輸入有兩行。

第一行四個實數 x1,y1,z1,r1 x1,y1,z1,r1--第乙個球的球心座標和半徑。

第二行四個實數 x2,y2,z2,r2 x2,y2,z2,r2--第二個球的球心座標和半徑。

保證所有輸入的座標和半徑的範圍都在 [−100,100] [−100,100] 內。

輸出一行乙個實數--表示兩個球的體積並,你的答案被認為正確,當且僅當絕對誤差不超過 10−6 10−6。
示例1

0 0 0 1

2 0 0 1

8.3775804
示例2

0 0 0 1

0 0 0 0.5

4.1887902
#include #define ll long long

const double pi = acos(-1);

using namespace std;

int main()

else if (dis+r1<=r2)//重合

else if(dis+r2<=r1)

else //相交

printf("%.7f\n",sum-ans);

return 0;

}

牛客練習賽41

相當於求n個點,已知n條邊,組成各個連通分塊,每個連通分塊有乙個和值,求出最大的幾個和值。用並查集給邊建立聯絡,計算連通塊和是 先找到那個fa點 再給該點加值。include include include include include includeusing namespace std typ...

牛客練習賽 41

a.博弈 我們發現 要麼一次拿光,要麼 m 為 1 否則都贏不了 b.dp 思路,因為有負數,如果全負數,最小為 666 300 近似於 21w 所以把錨點設為 210000,dp i j 代表 前 i 個數字 湊夠數字 j 的方案數,dp i j dp i 1 j dp i 1 j a i 但是 ...

牛客網練習賽 41

a 中文題意,直接說思路 可以知道在n m 0 的時候可以全部翻轉完,但當第一次翻轉完之後b使壞一次就永遠也翻不到,所以只有當n m的時候是yes其他都是no include using namespace std int main b 思路 簡單的計數dp,可以設 dp i j 表示的是你在第i輪...