一.並查集
主要操作:
1.合併兩個不相交集合
2.判斷兩個元素是否屬於同一集合
時間複雜度:
o(n*α(n)),其中α(x),對於x=宇宙中原子數之和,α(x)不大於4,事實上,路經壓縮後的並查集的複雜度是乙個很小的常數。
模板題
#include #includeusing namespace std;
//for poj 1611
const int maxn = 30001;
int pa[maxn],rank[maxn],num[maxn];
void make_set(int x)
int find_set(int x)
return root;
}void union_set(int x, int y)
else
}int main()
for(i = 0; i < n; i++)
make_set(i);
for(i = 0; i < m; i++)
}/*找到0所在的樹的樹根*/
x = find_set(0);
cout << num[x] << endl;
}return 0;
}
資料結構專題qvq
傳送門 由於每次只在最後加數我們就考慮乙個神奇的動態反向st表xd include include include include include include include define ll long long define maxn 200000 10 define inf 0x7ffff...
資料結構練習專題
下面我給大家帶來一些資料結構的題,供大家欣賞 一 棧 鐵軌試題描述 某城市有乙個火車站,鐵軌鋪設如圖所示,有n節車廂從a方向駛入車站,按進站順序編號為1至n。你的任務是判斷是否能讓它們按照某種特定的順序進入b方向的鐵軌並駛出車站。為了重組車廂,你可以借助中轉站c。這是乙個可以停放任意多節車廂的車站,...
資料結構專題總結
這幾天主要學習以及了解了幾種資料結構,只能說是大概理解了其作用,和基本使用方法,但還不能具體靈活運用。這裡主要談談對這幾個知識點的理解 首先是棧和佇列,主要是做了幾個關於棧的題目,佇列知識要與其他知識一起用,現在還不能知道其具體作用和用法。棧是主要特點是先進先出,在c 中有專門的類庫,但我更習慣用陣...