並查集的計數方法

2022-05-11 02:06:30 字數 765 閱讀 5699

十分玄學

剛開始打算建森林樹形dp,結果不會建立樹,看了題解發現合併集合時候乘起來就好,沒必要非得建樹,想法和樹形dp一樣

dp1表示畫水,dp0表示不用水,由於高的點畫了水,連通塊的點都會有水,所以高處放水只有一種方案。

由此可以從下往上推,集合相互合併就把答案乘起來,具體看**把,不好想,很好寫。

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

typedef long long ll;

const int maxn = 1e6+111;

ll mod = 1e9+7;

int n,m;

char map[1010][1010];

int id[1010][1010];

int par[maxn];

ll ans[maxn];

int find(int x)

int unin(int x,int y)

par[yy] = xx;

ans[xx] = (ans[yy]*ans[xx])%mod;

return 0;

}int main()

}if(j != 0)}}

for(int j=0;j}}}

ll chal = 1;

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

}printf("%lld\n",chal);

return 0;

}

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

並查集(帶計數) 模板

題意 在另乙個宇宙,乙個月有 n 天。多變的天氣條件使得人們很惱火,終於,天氣統計局產生了。它會對外發布 m 條資訊,格式如下 x y 表示第 x 天的天氣和第 y 天一樣。但民眾並不滿足於此,他們想知道有多少天的天氣和第 x 天一樣。現在,作為乙個聰明的程式設計師,你能幫他們解決這個問題嗎?題解 ...

分類並查集 並查集的複習

動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y是同類。第二種說法是 2 ...