向前合併並查集,其實是路徑壓縮。
因為每乙個點對應的字母是確定的所以,我們把每一次看成線段,更新線段沒有覆蓋到的。用並查集把線段連續的合併在一起。
注意這裡每一次向前查詢,當前點的父親節點應該指向像一條線段的父親。
#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個矩形,給定每個矩形的左下角座標和右上角座標。如果把重合的矩形合併成...