cf 828c向前合併並查集

2022-05-21 04:56:01 字數 1107 閱讀 8759

向前合併並查集,其實是路徑壓縮。

因為每乙個點對應的字母是確定的所以,我們把每一次看成線段,更新線段沒有覆蓋到的。用並查集把線段連續的合併在一起。

注意這裡每一次向前查詢,當前點的父親節點應該指向像一條線段的父親。

#include#include#include#include#include#include#include#include#include#include#include//#include#include#define up(i,a,b)  for(int i=a;ib;i--)

#define upd(i,a,b) for(int i=a;i<=b;i++)

#define dwd(i,a,b) for(int i=a;i>=b;i--)

//#define local

typedef long long ll;

const double esp = 1e-6;

const double pi = acos(-1.0);

const int inf = 0x3f3f3f3f;

const int inf = 1e9;

using namespace std;

ll read()

while (ch >= '0' && ch <= '9')

return x * f;

}typedef pairpir;

#define lson l,mid,root<<1

#define rson mid+1,r,root<<1|1

#define lrt root<<1

#define rrt root<<1|1

const int n = 2e6 + 10;

int fa[n];

int hi[n];

int n;

void build()

}int findx(int x)

char ans[n];

char temp[n];

int k;

int pos;

int main()

} }up(i, 1, mxn)

return 0;

}

cf 828c向前合併並查集

向前合併並查集,其實是路徑壓縮。因為每乙個點對應的字母是確定的所以,我們把每一次看成線段,更新線段沒有覆蓋到的。用並查集把線段連續的合併在一起。注意這裡每一次向前查詢,當前點的父親節點應該指向像一條線段的父親。include include include include include inclu...

按秩合併並查集

1.通過比較並查集的大小來連邊,將小的 u 向大的 v 連邊,這樣對於大的並查集,查詢代價不變,而小的並查集查詢代價每個點增加了1,相當於增加了siz u 反過來則變成了siz v siz u logn 因為每上一層大小減半 2.相較於路徑壓縮的並查集,他可以保留原始的資訊 例題 bzoj4668 ...

SDNU 1016 矩形合併 並查集

1016.矩形合併 time limit 1000 ms memory limit 32768 kb total submission s 242 accepted submission s 49 description 平面上有n個矩形,給定每個矩形的左下角座標和右上角座標。如果把重合的矩形合併成...