洛谷P3958 乳酪

2021-08-21 17:22:10 字數 2470 閱讀 7187

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

現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的坐 標。如果兩個空洞相切或是相交,則 jerry 可以從其中乙個空洞跑到另乙個空洞,特別 地,如果乙個空洞與下表面相切或是相交,jerry 則可以從乳酪下表面跑進空洞;如果 乙個空洞與上表面相切或是相交,jerry 則可以從空洞跑到乳酪上表面。

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

空間內兩點 p1(x1,y1,z1) 、 p2(x2,y2,z2) 的距離公式如下:

(p_1,p_2)=sqrt((x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2)

輸入格式:

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

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

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

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

輸出格式:

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

輸入樣例#1:複製

3 

2 4 1

0 0 1

0 0 3

2 5 1

0 0 1

0 0 4

2 5 2

0 0 2

2 0 4

輸出樣例#1:複製

yes

noyes

【輸入輸出樣例 1 說明】

第一組資料,由乳酪的剖面圖可見:

第乙個空洞在 (0,0,0) 與下表面相切

第二個空洞在 (0,0,4) 與上表面相切 兩個空洞在 (0,0,2) 相切

輸出yes

第二組資料,由乳酪的剖面圖可見:

兩個空洞既不相交也不相切

輸出no

第三組資料,由乳酪的剖面圖可見:

兩個空洞相交 且與上下表面相切或相交

輸出yes

【資料規模與約定】

對於 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 。

一道很經典的並查集題,遇到相連的空洞就合併集合,主要看**。

// luogu-judger-enable-o2

#include#include#includeusing namespace std;

int f[1001];

int find(int x)//查詢+路徑壓縮

double dis(long long x,long long y,long long z,long long x1,long long y1,long long z1)//兩點距離公式

long long x[100001],y[100001],z[100001];

int f1[100001],f2[100001];

//f1記錄與頂面相交的洞的序號

//f2記錄與底面相交的洞的序號

int main()

for (int j=1;j<=n;j++)

if (z[j]-r<=0)

for (int k=1;k<=j;k++)}}

int s=0;

for (int j=1;j<=tot1;j++)

}if (s==1) break;

}if (s==1) cout<

else cout<

}return 0;

}

洛谷P3958 乳酪

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

洛谷P3958 乳酪

原題位址 17年noip提高組的第二題,看到好多人都用搜尋,就拿並查集來水一篇題解 現有一塊 酪,它的高度為h,它的長度和寬度我們可以認為是無限大的,乳酪 中間有許多半徑相同的球形空洞。我們可以在這塊乳酪中建立空間座標系,在坐 標係中,乳酪的下表面為z 0,乳酪的上表面為z h。現在,乳酪的下表面有...

洛谷P3958 乳酪

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