傳送門:
第一眼看就是「銀河英雄傳說」,其實只是類似,異或和有神奇的地方。
首先,find時,只有fx!=find(fx)時,才更改sum[x],因為維護的是字首和(感性理解),sum[x]不僅是自己的,而且異或了fx的,所以sum[x]不能多次更改,最後也要去掉f[x](就是多異或個fx)。
#include#include#include#include#includeusing namespace std;int n,m,a[300005],f[300005],sum[300005];
int read()
while(x>='0'&&x<='9')sum=sum*10+x-'0',x=getchar();
return sum*f;
}int find(int x)
return f[x];
}int main()
int x,y,z;
while(m--)
else
}}
分類並查集 並查集的複習
動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y是同類。第二種說法是 2 ...
並查集 並查集的刪除操作
描述 一天小 w 給學弟們上課,小 w 說 注意了,並查集只適合於加的操作,不太方便處理減的操作喲。j 老師聽了後,呵呵了一下。她課後找到小 w 說,其實並查集也可以做減的操作的。只看你如何靈活運用了。比如這個題 給你 n 個元素,最開始時分屬於 n 個集合,有如下三種操作 小 w 陷入了無盡的思考...
並查集 並查集的基本操作總結
並查集的定義 並 union 合併 查 find 查詢 集 set 查詢 並查集的實現 int father n 使用乙個陣列記錄 father 1 1 1的父節點是本身 father 2 1 2的父節點是1 並查集的初始化 for int i 1 i n i 並查集的查詢 int findfath...