HNOI2012 永無鄉 題解

2022-03-16 16:57:41 字數 883 閱讀 1042

對於每乙個點先建立乙個權值線段樹,之後並查集維護/更改連通性。

不知道權值線段樹是啥的戳我

聯通就直接把祖先連起來然後合併線段樹

#include#include

using

namespace

std;

const

int n=100005

;int size[n*20],n,m,fa[n],type,q,root[n],w[n],rev[n],ls[n*20],rs[n*20

];int

read()

while(ch>='

0'&&ch<='9'

) x=x*10+ch-48,ch=getchar();

return x*f;

}int findf(int

x)void add(int &k,int l,int r,int

val)

int mid=l+r>>1

;

if(val<=mid)add(ls[k],l,mid,val);

else add(rs[k],mid+1

,r,val);

size[k]=size[ls[k]]+size[rs[k]];

}int merge(int x,int

y)int query(int k,int l,int r,int

val)

intmain()

for(int i=1;i<=n;i++)

q=read();

char op[3

];

for(int i=1;i<=q;i++)

}else}}

return0;

}

view code

HNOI2012 永無鄉 splay合併

題目描述 永無鄉包含 n 座島,編號從 1 到 n 每座島都有自己的獨一無二的重要度,按照重要度可以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間由巨大的橋連線,通過橋可以從乙個島到達另乙個島。如果從島 a 出發經過若干座 含 0 座 橋可以 到達島 b 則稱島 a 和島 b 是連通的。...

luogu解題報告 HNOI2012永無鄉

啟發式合併 平衡樹 並查集 複雜度o n lg2n 還是可以過的.splay一次寫過然而後面各種跪.除錯能力捉急 估計是wc2017課前助眠 聽太多了 include using namespace std const int n 100005 struct node tree n 30 int t...

線段樹合併 HNOI2012 永無鄉

問題 b hnoi2012 永無鄉 時間限制 1 sec 記憶體限制 128 mb 提交 50 解決 28 提交 狀態 討論版 題目描述 永無鄉包含 n 座島,編號從 1 到 n,每座島都有自己的獨一無二的重要度,按照重要度可 以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間由巨大的橋連...