十分玄學
剛開始打算建森林樹形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 ...