洛谷 NOI 2024 食物鏈

2021-08-20 13:41:15 字數 1016 閱讀 4139

很好的並查集問題。

題目不是很難理解 : 有3類動物,對於每一類動物分別存在它的獵物、天敵、與同類。不難看出我們需要開三個並查集去儲存每乙隻動物的獵物、天敵、與同類。

處理每一次遇到的話:

首先判斷它是關於同類的敘述還是天敵的敘述,對於這次所涉及的動物x與y:

1、同類:首先判斷y存不存在於x天敵或者是獵物的並查集中,如果兩者都不存在,那麼一定是同類了,說明當前的宣告的是真話,並進行將y合併到x同類的並查集中、x合併到y同類的並查集中的操作;否則當前的宣告的是假話,ans++,並跳過所有操作。

2、y是x的獵物:首先判斷y存不存在於x天敵或者同類的並查集中,如果兩者都不在的話,y一定是x的獵物了,說明當前的宣告是真話,並進行將y合併到x獵物的並查集中、x合併到y天敵的並查集中的操作;否則說明當前的宣告是假話,ans++,並跳過所有操作。

直觀感受一下:

其實只用開乙個並查集,這個並查集不同的區間代表不同的類別(獵物、天敵、與同類),如上圖。

ok & ac。

**:

#include const  int  n = 500000 + 5 ;

int f [ n ] , n , k , ans , ok , y , x ;

int find ( int x )

int main ( )

if ( ok == 1 )

}else

if ( find ( x ) == find ( y ) || find ( x + 2 * n ) == find ( y ) )

ans ++ ;

else }}

printf ( "%d" , ans ) ;

return 0 ;

}

洛谷2024食物鏈

題目描述 動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。現有 n 個動物,以 1 n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道 它到底是哪一種。有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述 第一種說法是 1 x...

洛谷2024 食物鏈

題目描述 動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。現有 n 個動物,以 1 n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道 它到底是哪一種。有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述 第一種說法是 1 x...

NOI2001 洛谷2024 食物鏈

題目描述 動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。現有 n 個動物,以 1 n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道 它到底是哪一種。有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述 第一種說法是 1 x...