對於每乙個點先建立乙個權值線段樹,之後並查集維護/更改連通性。
不知道權值線段樹是啥的戳我
聯通就直接把祖先連起來然後合併線段樹
#include#includeview codeusing
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;
}
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 來表示。某些島之間由巨大的橋連...