乳酪 並查集

2021-09-29 15:09:41 字數 2266 閱讀 6527

先來看看題

現有一塊**酪,它的高度為 h,它的長度和寬度我們可以認為是無限大的,乳酪中間有許多半徑相同的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中,乳酪的下表面為z = 0,乳酪的上表面為z = h。

現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的座標。

如果兩個空洞相切或是相交,則 jerry 可以從其中乙個空洞跑到另乙個空洞,特別地,如果乙個空洞與下表面相切或是相交,jerry 則可以從乳酪下表面跑進空洞;如果乙個空洞與上表面相切或是相交,jerry 則可以從空洞跑到乳酪上表面。

位於乳酪下表面的 jerry 想知道,在不破壞乳酪的情況下,能否利用已有的空洞跑到乳酪的上表面去?

空間內兩點p(x ,y ,z )、p(x ,y ,z )的距離公式如下:

輸入檔名為 cheese.in。

每個輸入檔案包含多組資料。

輸入檔案的第一行,包含乙個正整數 t,代表該輸入檔案中所含的資料組數。

接下來是 t 組資料,每組資料的格式如下:

第一行包含三個正整數 n,h 和 r,兩個數之間以乙個空格分開,分別代表乳酪中空洞的數量,乳酪的高度和空洞的半徑。

接下來的 n 行,每行包含三個整數 x、y、z,兩個數之間以乙個空格分開,表示空洞球心座標為(x, y, z)。

輸出檔名為 cheese.out。

輸出檔案包含 t 行,分別對應 t 組資料的答案,如果在第 i 組資料中,jerry 能從下表面跑到上表面,則輸出「yes」,如果不能,則輸出「no」(均不包含引號)。

對於 20%的資料,n = 1,1 ≤ h , r ≤ 10,000,座標的絕對值不超過 10,000。

對於 40%的資料,1 ≤ n ≤ 8, 1 ≤ h , r ≤ 10,000,座標的絕對值不超過 10,000。

對於 80%的資料,1 ≤ n ≤ 1,000,1 ≤ h , r ≤ 10,000,座標的絕對值不超過 10,000。

對於 100%的資料,1 ≤ n ≤ 1,000,1 ≤ h , r ≤ 1,000,000,000,t ≤ 20,座標的絕對值不超過1,000,000,000。

「「時間限制:1s 空間限制:256mb」」

這道題不要想得過於複雜,把每個洞想象成乙個點(球心),雖然每個點有x,y,z三個量定義,但通過公式可以將其任意兩點間的距離求出,既任意兩球心都處在同一平面內(儘管這個平面不平行於乳酪的任意面,但這不重要)。

現在我們已成功將三維關係轉化成一維關係,可以通過刨面圖來分析。【此時並查集出場】只要兩點相同,就可以將它們並成乙個集合。其實並查集很好想,就是在**實現的時候應注意人工製造cheese和cheese,預設其聯通乳酪上下表面。各個點看看能不能連上包括的其他點,過程套並查集模板即可。

(c++)

#include

#define size 1010

using

namespace std;

int cheese[size]

;double x[size]

,y[size]

,z[size]

;long n,h,r;

double

math

(double ***,

double yyy,

double zzz,

double xx,

double yy,

double zz)

intfind

(int root)

intmain()

//ding

if(z[i]

-r<=0)

//di

for(j=

1;j}int r1=

find(0

);int r2=

find

(1001);

if(r1==r2) cout<<

"yes"

<

if(r1!=r2) cout<<

"no"

<

}//fclose(stdin);

//fclose(stdout);

return0;

}

乳酪(並查集)

題目描述 現有一塊 酪,它的高度為 h,它的長度和寬度我們可以認為是無限大的,乳酪中間有許多半徑相同的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中,乳酪的下表面為 z 0,乳酪的上表面為 z h。現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的座標。如果兩個空...

C 初學記錄(乳酪 並查集)

原題目 牛客網 題目描述 現有一塊 酪,它的高度為 h,它的長度和寬度我們可以認為是無限大的,乳酪中間有許多半徑相同的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中,乳酪的下表面為 z 0,乳酪的上表面為 z h。現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的...

10 27T4 乳酪 並查集

描述 輸入每個輸入檔案包含多組資料。輸入檔案的第一行,包含乙個正整數 t,代表該輸入檔案中所含的資料組數。接下來是 t 組資料,每組資料的格式如下 第一行包含三個正整數 n,h 和 r,兩個數之間以乙個空格分開,分別代表乳酪中空 洞的數量,乳酪的高度和空洞的半徑。接下來的 n 行,每行包含三個整數 ...