容斥 二進位制UVA 11806

2021-07-11 10:04:56 字數 852 閱讀 9067

問題是求四個邊都有隊員的排列組合,根據容斥原理可以轉化為對立問題的求解: 全集為s=c(n*m,k), 該區域有k個隊員的全部排列組合,|a|=最左邊沒有隊員的全部種數,|b|=最右邊沒有,|c|=最上邊沒有,|d|=最下邊沒有,則答案就是屬於全集s但不屬於 a,b,c,d中任何乙個集合,根據容斥

ans=s-|a|-|b|-|c|-|d|+|ab|+|ac|+|ad|+|bc|+|bd|+|cd|-|abc|-abd|-|acd|-|bcd|+|abcd|

#include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=510;

const

int mod=1000007;

int c[maxn][maxn]=;

void getc();

int main()

; if(s&2);

if(s&4);

if(s&8);

//根據公式,奇數個減,偶數個加

if(count&1)ans=(ans+mod-c[r*c][k])%mod;

else ans=(ans+c[r*c][k])%mod;

}printf("case %d: %d\n", case, ans);

}return0;}

void getc() //計算組合數c(n,k) c(n,k)=c(n-1,k)+c(n-1,k-1)

}

UVA 11806 容斥原理

題意 往乙個n m的方格裡放k個石塊,問有多少種方式 最後一行,最後一列,第一行,第一列必須放至少乙個 思路 簡單容斥一下 最後一行不放為事件r1,最後一列c1,第一行r2,第一列c2 全部情況 c1 c2 r1 r2 c1 c2 r1 r2 c1 r1 c1 r2 二進位制列舉一下,奇加偶減 in...

uva11806 容斥定理

n m的矩形 k個人 第一行,最後一行,第一列,最後一列都至少站有乙個人 小水題正著做不好做,要反著想,那就容斥定理,abcd四種情況分別是那四個行列分別沒有人。1 include2 include3 include4 include5 using namespace std 67 const in...

uva11806(容斥原理)拉拉隊

例題 3 拉拉隊 cheerleaders,uva 11806 在乙個m行 n列的矩形網格裡放 k個相同的石子,問有多少種方法?每 個格仔最多放乙個石子,所有石子都要用完,並且第一行 最後一行 第一列 最後一列都得有石子。輸入格式 輸入第一行為資料組數t t 50 每組資料報含 3個整數m,n,k ...