棋盤是乙個n×m的矩形,分成n行m列共n*m個小方格。現在萌萌和南南有c種不同顏色的顏料,他們希望把棋盤用這些顏料染色,並滿足以下規定:
1. 棋盤的每乙個小方格既可以染色(染成c種顏色中的一種) ,也可以不染色。
2. 棋盤的每一行至少有乙個小方格被染色。
3. 棋盤的每一列至少有乙個小方格被染色。
4. 每種顏色都在棋盤上出現至少一次。
以下是一些將3×3棋盤染成c = 3種顏色(紅、黃、藍)的例子:
請你求出滿足要求的不同的染色方案總數。只要存在乙個位置的顏色不同,即認為兩個染色方案是不同的
輸入只有一行 3 個整數 n,m,c 。1 < = n,m,c < = 400
輸出乙個整數,為不同染色方案總數。因為總數可能很大,只需輸出總數mod 1,000,000,007的值。
首先像這樣的題是可以用盒子與球的方法的。
我們把白色也當做一種顏色,則就有c+1個顏色,則總方案數(隨便排)就是:
根據容斥原理的加加減減就可以:
設i為隨便i行,j為隨便j列,k為隨便k個不同的顏色,則就有:
至於-1的指數,自己推一下就出來了。
這樣用乘法分配律變一下不要告訴我是錯的
然後,我們發現後面的sigma很像二項式定理
(a+b)^n=c(n,0)a^n+c(n,1)a^(n-1)b+...+c(n,i)a^(n-i)b^i+...+c(n,n)b^n
我們先不看前面的,則就有:
∑c(m,j) * (-(k+1)∧i)∧j
∧表示次方(該死的搜狗)
發現,把a帶入上上個式子後,b不就為1嘛?
所以sigma就
好懂吧(自作多情)
由於g老師說我**亮得太多,所以——————
我還是要亮!
就亮一下核心**吧:
感覺亮了跟沒亮區別不大eefor( int i = 0 ; i <= n ; i ++ )
}
bzoj5306 NTT 容斥原理 染色
description 傳送門 題解 upd 原來這是二項式反演來著qwq 貼一下容斥題的一點點做法.首先顯然先求方案數g i g i g i 表示只有i ii種出現了s ss次的方案數 那怎麼說也要求乙個f i f i f i 表示至少有i ii種出現了s ss次的方案數 f i cm i cn ...
題解 方塊染色 容斥原理 巧妙分類
剛開始以為是道容斥,寫了這個錯誤程式 int main if t m 1 delta mod delta ans ans delta mod printf d n ans return 0 這顯然是錯的,容斥套容斥,我不知道為什麼我敢交上去 可能是對了樣例 後來我通過仔 bai 細 du 思 ti ...
容斥原理 數論
兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...