HDU1856(並查集求最大集合)

2021-08-28 21:42:10 字數 431 閱讀 3219

有比較說明一點經驗:求最大值有時候不需要把資料求出來後遍歷。

注意:最大值的求解和比較的順序沒有關係,所以可以一邊求出資料,一邊進行比較。【即用設定全域性變數maxp的方法解決】

省去最後遍歷的步驟。 

#include#include#include#includeusing namespace std;

const int maxn=1e7+5;

int pre[maxn];

int re[maxn];

int n;

int a,b;

int foot1,foot2,maxp;

void init()

{ for(int i=0; i【經驗】在資料產生時刻記錄下來並合理利用可以大大降低時間複雜度。(減少遍歷的時間)

尤其是在尋求最值的時候,這是乙個值得考慮的方向!

HDU3938 並查集 並查集

先按邊權值排個序,每次加入一條邊,用並查集,關鍵看懂題。include include include include using namespace std const int maxn 10010 int n,m,q struct edge edges maxn 5 inline int cmp...

hdu3367最大偽森林(並查集)

題目要求乙個連通圖的最大偽森林,偽森林是乙個最多有乙個迴路的圖。我們只要用kruskal最大生成樹的策略就可以,給根節點表上記號表明這棵樹有沒有負環。其實也有一些貪心的思想。如下 1 include2 using namespace std 3 typedef unsigned int ui 4 t...

hdu 拓撲排序 並查集

題目大意 有一些池塘,每乙個池塘都有乙個價值,現在想刪除一些池塘。有如下刪除條件 1 乙個池塘有兩個管道連線的不可以刪除。2 求最後剩下的為奇數環的池塘的價值。先用拓撲排序的思路將兩個一下連線的全刪除 只有用並查集統計數目 includeusing namespace std define ll l...