BZOJ4487 JSOI2015 染色問題

2022-03-26 00:30:28 字數 521 閱讀 6383

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(nc\log m)\)地完成了。

#includeconst int n=407,p=1000000007;

int fac[n],ifac[n];

int mod(int x)

int inc(int a,int b)

int dec(int a,int b)

int mul(int a,int b)

int pow(int a,int k)

int c(int n,int m)

int main()

BZOJ 4487 Jsoi2015 染色問題

棋盤是乙個n m的矩形,分成n行m列共n m個小方格。現在萌萌和南南有c種不同顏色的顏料,他們希望把棋盤用這些顏料染色,並滿足以下規定 1.棋盤的每乙個小方格既可以染色 染成c種顏色中的一種 也可以不染色。2.棋盤的每一行至少有乙個小方格被染色。3.棋盤的每一列至少有乙個小方格被染色。4.種顏色都在...

bzoj 4487 Jsoi2015 染色問題

問在n m 的網格圖上染色,要求每一行,每一列至少有乙個格被染色,且每種顏色至少出現一次,問方案數。今天腦子非常不清醒,想這種容斥裸題都想了半天 一開始還寫了個n3 的。直接做不好做,顯然要容斥,有三個限制,其中兩個容斥,剩下乙個算時候保證合法。我先對列容斥,設f i 表示最多有 i 列有格仔被染色...

bzoj4487 Jsoi2015 染色問題

隔壁rose爺爺 這個隨便容斥一下寫完就過了 我 我的做法很菜雞,首先顏色給它變成最多用多少,然後再容斥 然後搞二維你設f i j 為i行為0j列為0的數量,再考慮容斥 會發現乙個很像二維二項式反演的東西。我不知道能不能直接用啊 捂臉,那就設了個類似字首和帶上組合數的東西,先反演出這個,再反演出f ...