bzoj4487 Jsoi2015 染色問題

2022-04-29 19:48:09 字數 998 閱讀 5745

隔壁rose爺爺:這個隨便容斥一下寫完就過了

我:。。。

我的做法很菜雞,首先顏色給它變成最多用多少,然後再容斥

然後搞二維你設f[i][j]為i行為0j列為0的數量,再考慮容斥

會發現乙個很像二維二項式反演的東西。。。

我不知道能不能直接用啊(捂臉,那就設了個類似字首和帶上組合數的東西,先反演出這個,再反演出f

其實三個容斥可以套在一起直接算。。。。

成功卡常。。

有個更強的推導 這個二項式定理還是用得很妙的 我的部落格沒法看了

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int maxn=4e2+10

;const ll mod=1e9+7

;ll c[maxn][maxn];

void

yu()

}}ll g[maxn][maxn],h[maxn],mi[maxn*maxn];

intmain()

h[j]%=mod;

if(h[j]<0)h[j]+=mod;

}ll f=0; int op=1

;

for(int v=0;v<=m;v++)

f%=mod;

if(f<0)f+=mod;

if(cop==1)ans+=c[cc][c]*f%mod;

else ans-=c[cc][c]*f%mod;

cop=-cop;

}ans%=mod;

if(ans<0)ans+=mod;

printf(

"%lld\n

",ans);

return0;

}

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 染色問題

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...