正文
第二題:食物鏈
這題經典啊!!!我們可以想象,如果我們可以搞乙個並查集來維護x的同夥,天敵和食物就好了。
我們想到了開三倍空間來維護x的天敵,同夥和食物。
我們假設有一句話是x和y是同類,那麼要滿足兩個條件,x不吃y,而且y不吃x。如果都滿足,那麼我們就可以把他們聯絡起來。
我們再假設一句話是x吃y,那麼要滿足的條件顯然有,x和y不為同類,而且y不吃x。
我們再把他們聯絡起來即可。
怎麼聯絡呢?,我們看**吧~
#include#include#includeint n,m;
int f[150010];//1<=i<=50000 1到50000表示i的同類,i+n表示i的食物,i+2*n為i的天敵。
int ans=0;
int findpa(int x)
bool comp(int x,int y)
void couple(int x,int y)
int main()
if(k==1)
couple(x,y);
couple(x+n,y+n);
couple(x+2*n,y+2*n);
} else
couple(x,y+2*n);
couple(x+n,y);
couple(x+2*n,y+n);
} }printf("%d\n",ans);
}
洛谷 並查集 食物鏈
動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。現有 n 個動物,以 1 n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道 它到底是哪一種。有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示...
食物鏈 洛谷2024 並查集
動物王國中有三類動物 a,b,c,這三類動物的食物鏈構成了有趣的環形。a 吃 b,b 吃 c,c 吃 a。現有 n 個動物,以 1 n 編號。每個動物都是 a,b,c 中的一種,但是我們並不知道 它到底是哪一種。有人用兩種說法對這 n 個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示...
並查集 食物鏈
noi2001,水題,但是我調了很久。食物鏈time limit 1000ms memory limit 10000k total submissions 27766 accepted 8066 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃...