BZOJ4668 冷戰 並查集 按秩合併

2022-04-06 18:41:42 字數 599 閱讀 3309

題意:還可以這樣亂搞

並查集按秩合併的好處:

深度不會超過\(o(\log n)\)

樹的結構保持較穩定 -> 雖說連邊的時候依舊是祖先來連邊,但連邊不會改變原來的結構,並且(u,v)路徑上會經過新連的邊

於是就可以亂搞了

維護乙個按秩合併的並查集,給連邊操作加時間戳,查詢的時候暴力求路徑上時間戳最大值

ps:暴力lca也是需要deep

ps2:按秩合併是看高度的吧,為什麼我的好慢???人傻自帶大常數???並且改成啟發式合併我的就t掉了

#include #include #include #include using namespace std;

const int n = 5e5+5;

int n, m, fa[n], val[n], he[n], deep[n], tim, ans;

int find(int x)

}void union(int x, int y)

void find(int x, int y)

cout << ans << '\n'; }}

int main()

}

BZOJ4668 冷戰 並查集

time limit 10 sec memory limit 256 mb submit 538 solved 269 submit status discuss 1946 年 3 月 5 日,英國前首相溫斯頓 邱吉爾在美國富爾頓發表 鐵 幕演說 正式拉開了冷戰序幕。美國和蘇聯同為世界上的 超級大國...

BZOJ4668 冷戰 並查集

比較自然的思路是,由於需要記錄連通塊合併時的資訊,所以需要建出kruskal重構樹。不妨考慮在並查集合並的同時記錄資訊,pre x 表示x與它的父親相連的時刻。兩個點連通的時刻,等於兩個點之間路徑上時刻的最大值。注意到按秩合併但不路徑壓縮的並查集不改變樹的結構,且樹高為log,正好符合要求。o n ...

BZOJ4668 冷戰 並查集

time limit 10 sec memory limit 256 mb submit 538 solved 269 submit status discuss 1946 年 3 月 5 日,英國前首相溫斯頓 邱吉爾在美國富爾頓發表 鐵 幕演說 正式拉開了冷戰序幕。美國和蘇聯同為世界上的 超級大國...