BZOJ4602 齒輪,帶權並查集

2021-07-13 07:28:25 字數 1146 閱讀 8348

time:2016.06.09

author:xiaoyimi

傳送門ps

這段時間在狂補文化課,10天就碰過一次鍵盤,結果回來發現連快速讀入都敲不對了233

接下來一段時間仍保持這種狀態了……

思路:

r2唯一可做的一道題?

在學校弄了個30分做法

回來一交a了……

感覺分解質因數的方法高大上啊有木有 su

m[x]

表示x是其所在集合的代表元素fa[x]的幾分之幾(所以su

m[fa

[x]]

=1,如果w[

fa[x

]]w[

x]=a

b ,那麼sum[x]=ba

) 詢問判斷:如果u,v在同一集合裡直接判斷即可,反之將兩者合併

合併思路:如果我們要合併u,v兩個元素所在集合且uv

=xy ,那麼我們需要解決的就是fa[u],fa[v]之間的數量關係,讓su

m[fa

[u]]

=sum

[v]∗

xsum

[u]∗

y 即可

find操作:先讓fa

[x] 合併到乙個新集合裡,這時su

m[fa

[x]]

已經更新過了,只要讓su

m[x]

=sum

[x]∗

sum[

fa[x

]]就行了

(以上一些式子的推導很簡單,我就不列過程了)

注意:

暫無 **:

#include

#include

#include

#include

using

namespace

std;

int t,n,m;

int fa[1003];

double sum[1003];

int in()

int find(int x)

void work()

if (flag) puts("no");

else

puts("yes");

}main()

並查集,帶權並查集

題意 ignatius過生日,客人來到,他想知道他需要準備多少張桌子。然而一張桌子上面只能坐上相互熟悉的人,其中熟悉可定義成為a與b認識,b與c認識,我們就說a,b,c相互熟悉 例如a與b熟悉and b與c熟悉,d與e熟悉,此時至少需要兩張桌子。輸入 t表示樣例個數,n表示朋友個數,朋友從1到n編號...

BZOJ 1202 帶權並查集

1202 hnoi2005 狡猾的商人 description 刁奼接到乙個任務,為稅務部門調查一位商人的賬本,看看賬本是不是偽造的。賬本上記錄了n個月以來的收入情況,其中第i 個月的收入額為ai i 1,2,3 n 1,n 當 ai大於0時表示這個月盈利ai 元,當 ai小於0時表示這個月虧損ai...

帶權並查集 bzoj 1202

time limit 10 sec memory limit 162 mb submit 1745 solved 837 submit status discuss 刁奼接到乙個任務,為稅務部門調查一位商人的賬本,看看賬本是不是偽造的。賬本上記錄了n個月以來的收入情況,其中第i 個月的收入額為ai ...