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

2021-09-30 00:13:14 字數 2156 閱讀 9060

原題目:牛客網

題目描述 :

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

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

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

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

dist(p_1,p_2)=\sqrt

dist(p 1 ,p 2 )= (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」(均不包含引號)。

輸入描述:

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

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

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

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

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

輸出描述:

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

示例1

ac**

#include#include#include#include#define n 1005

using namespace std;

int x[n],y[n],z[n],father[n];

bool up[n],down[n],check1[n],check2[n];

void init(int n)

}long long dist(int i,int j)

int find(int x)

void merge(int x,int y)

int main()

{ int n,i,j,h,r,t,k;

bool flag;

scanf("%d",&t);

while(t--)

{scanf("%d%d%d",&n,&h,&r);

init(n);

flag=false;

for(i=1;i<=n;++i)

{scanf("%d%d%d",&x[i],&y[i],&z[i]);

if(z[i]-r<=0) down[i]=true;

if(z[i]+r>=h) up[i]=true;

if(up[i]&&down[i]) flag=true;

for(j=1;j題目理解

使用並查集或者深度搜尋暴力搜都能做出題目,我使用的是並查集方法,學習得到。先將所有洞的集合設定為自己,然後進行判斷他們是否相切或者相交,相交就將他們關聯起來,並查集中相對簡單的題目,**也相對容易理解。

C 初學記錄(並查集)

並查集 題目 今天是伊格那丟的生日。他邀請了很多朋友。現在該吃晚飯了。伊格那丟想知道他至少需要多少張桌子。你必須注意到並不是所有的朋友都認識對方,而且所有的朋友都不想和陌生人待在一起。這個問題的乙個重要規則是如果我告訴你a認識b,b認識c,這意味著a,b,c互相認識,所以它們可以在乙個表中。例如 如...

乳酪(並查集)

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

乳酪 並查集

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