種類並查集 食物鏈

2021-10-25 07:20:36 字數 2120 閱讀 9654

題意:

動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。

現有 n 個動物,以 1 - n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道它到底是哪一種。

有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述:第一種說法是 1 x y,表示 x 和 y 是同類。第二種說法是2 x y,表示 x 吃 y

此人對 n 個動物,用上述兩種說法,一句接一句地說出 k 句話,這 k 句話有的是真的,有的是假的。當一句話滿足下列三條之一時,這句話就是假話,否則就是真話。

1、當前的話與前面的某些真的話衝突,就是假話

2、當前的話中 x 或 y 比 n 大,就是假話

3、當前的話表示 x 吃 x,就是假話

你的任務是根據給定的 n 和 k 句話,輸出假話的總數。

思路:利用並查集,定義三倍的範圍,x表示動物本身,x+n表示x的食物,x+n+n表示天敵(被吃)。如果x吃y,可以理解為三種關係:1、x的食物是y(x+n=y) 。2、x是y的天敵(x=y+n+n)。3、y的食物是x的天敵(x+n+n=y+n)。有點繞。

**

#include 

#include

#include

#include <

set>

#include

#include

#include

#include

#include

#include

using namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define pb push_back

#define t int t

;scanf

("%d",&

t);while(t

--)const ll mod=

1e9+7;

int sum =0;

int f[

50000*3

+10];

int find

(int x)

int main()

}else}}

printf

("%d"

, sum)

;return0;

}/**/

題意:有n種蟲子,m對交配關係,請問有沒有一種昆蟲和同性異性都交配。有就輸出suspicious bugs found!,否則輸出no suspicious bugs found!

思路:還是種類並查集只要開兩倍,x表示同性,x+n表示異性。當x和y交配時,如果x和y在同乙個集合,就說明進行了同**配,如果find(x)!=find(y),那麼就合併x和y+n,合併y和x+n

**:

#include 

#include

#include

#include <

set>

#include

#include

#include

#include

#include

#include

using namespace std;

#define ll long long

#define inf 0x3f3f3f3f

#define pb push_back

#define t int t

;scanf

("%d",&

t);while(t

--)const ll mod=

1e9+7;

int sum =0;

int f[

2000*2

+10];

int find

(int x)

int main()

}if(ff)

printf

("suspicious bugs found!\n");

else

printf

("no suspicious bugs found!\n");

}return0;

}

食物鏈 種類並查集

推薦blog傳送門,超級詳細 做題思路 種類並查集,首先利用乙個陣列a來確定並查集關係,同時在建立乙個陣列b來表示某點與他們的boss點 根點 的關係。現規定 0 某點與他的根點為同類 1 某點與他的根點的關係為,根點種類的動物的可以吃掉該點種類的動物 2 某點與他的根點的關係為,該點種類的動物的可...

食物鏈(種類並查集)

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

食物鏈(種類並查集)

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