小X的液體混合 並查集 高精乘

2021-08-30 13:59:28 字數 529 閱讀 2414

我們可以發現,乙個連通圖中只有第乙個放進去的是無法產生貢獻的,而其他都是可以把危險係數乘2

22的。所以我們就只要判斷有多少個連通圖,這也就說明,有x

xx個點是不能產生貢獻。那麼剩餘的n−x

n−xn−

x連通圖個數的點都是可以讓答案乘2

22的。

那麼就用並查集判斷連通圖個數,然後再高精乘即可。

#include

using

namespace std;

const

int t=

301;

int n,m,x,x,y,a[t]

=,f[

10001];

bool b[

10001];

inline

intfind

(int x)

voiddf(

int mm)

}int

main()

小 X 的液體混合

example mixture.in 3 21 2 2 3mixture.out 4scoring 對於 30 的資料,n 10。對於 100 的資料,1 n 1000,a b,同種反應不會出現多次。輸入的一張圖可能有多個不同的連通塊,而每個不同的連通塊之間互不影響,且每個 不同連通塊中加入的第一種...

題解 小X的液體混合

雖然小x不喜歡化學原理,但他特別喜歡把一大堆液體倒在一起。現在小x有n種液體,其中m對會發生反應。現在他想把這n種液體按某種順序倒入乙個容器內,讓他獲得最刺激的體驗,也就是使危險係數盡量大。我們可以這樣計算危險係數,一開始容器內沒有任何液體,危險係數為1。每次液體倒入容器時,若容器內已有一種或多種液...

並查集的啟發式合併

在原來剛接觸並查集的時候,感覺確實很方便,也是認為並查集就那麼點東西,簡單方便,但是後來無意間發現了乙個並查集的啟發式合併,可以對並查集進行優化,它優化的理論是用乙個陣列來記錄每個節點的深度,每一次合併都把節點向深度 高度 大的節點上進行合併,從而對最後的 生成樹 深度進行了優化。受益匪淺,好長時間...