問在n∗
m 的網格圖上染色,要求每一行,每一列至少有乙個格被染色,且每種顏色至少出現一次,問方案數。
今天腦子非常不清醒,想這種容斥裸題都想了半天……一開始還寫了個n3
的。 直接做不好做,顯然要容斥,有三個限制,其中兩個容斥,剩下乙個算時候保證合法。
我先對列容斥,設f[
i]表示最多有
i 列有格仔被染色過
那麼嚴格
i列就是f′
[i]=
∑ij=
1(−1
)i−j
f[j]
∗cji
考慮如何求
f ,因為每種顏色至少要有一次,所以再對顏色用相同的方法容斥就可以了。
code:
#include
#include
#include
#include
#define ll long long
const ll mod=1000000007;
using namespace std;
ll c[410][410],n,m,c,f[410],g[410];
void pre()
}ll pow(ll a,ll b)
return ans;
}ll solve(ll m)
int main()
BZOJ 4487 Jsoi2015 染色問題
棋盤是乙個n m的矩形,分成n行m列共n m個小方格。現在萌萌和南南有c種不同顏色的顏料,他們希望把棋盤用這些顏料染色,並滿足以下規定 1.棋盤的每乙個小方格既可以染色 染成c種顏色中的一種 也可以不染色。2.棋盤的每一行至少有乙個小方格被染色。3.棋盤的每一列至少有乙個小方格被染色。4.種顏色都在...
BZOJ4487 JSOI2015 染色問題
link 普及題。容斥二項式反演得到答案的計算公式 sum limits n sum limits m sum limits c 1 k 1 這樣我們就可以 o nmc 地完成了。然後隨便優化一下就是 sum limits n sum limits c 1 k 1 i 1 m 這樣我們就可以 o n...
bzoj4487 Jsoi2015 染色問題
隔壁rose爺爺 這個隨便容斥一下寫完就過了 我 我的做法很菜雞,首先顏色給它變成最多用多少,然後再容斥 然後搞二維你設f i j 為i行為0j列為0的數量,再考慮容斥 會發現乙個很像二維二項式反演的東西。我不知道能不能直接用啊 捂臉,那就設了個類似字首和帶上組合數的東西,先反演出這個,再反演出f ...