數學 集合計數

2022-03-27 07:14:10 字數 726 閱讀 1581

問題 j: 集合計數

時間限制: 1 sec 記憶體限制: 128 mb

題目描述

乙個有n個元素的集合有2^n個不同子集(包含空集),現在要在這2^n個集合中取出若干集合(至少乙個),使得

它們的交集的元素個數為k,求取法的方案數,答案模1000000007。(是質數喔~)

輸入 一行兩個整數n,k

輸出 一行為答案。

樣例輸入

3 2

樣例輸出

6如果固定k個元素必須選,則還剩下2^(n-k)個集合,

因此,交集》=k的方案數就是f[k]=c(n,k)*2^(2^(n-k))

很明顯我們要去重,那就要用到容斥原理了。

ans=f[k]* c(k,k)-f[k+1]* c(k+1,k)+f[k+2] *c(k+2,k)…..

也就是說當有k+1個交集時,得討論一下是哪幾個重了。

#include 

#define p 1000000007

#define n 1000000

#define ll long long

int n,k;ll ans,a[n+5],b[n+5],xp[n+5];

ll cheng(ll x,ll m)

ll c(int n,int

m)void init()

int main()

組合數學 容斥 集合計數

首先我們知考慮只有一種交集 交集的大小為k,那麼有2n k個子集包含了這k個元素 確定k個元素,再從剩下n k個元素任意選取,有2n k種組合 用這2n k個子集能有2 2 n k 種組合,再減去1個空集 一共有ck n種交集,這樣得出tmp k ck n 2 2 n k 1 種方法 這裡面包含了交...

集合計數 (容斥原理)

心路 題解,其實就是,這四個集合在隨機組成的方案中,空集相當於哪個集合都沒取交集為空所以不符合。求出1,3後乘上c n,2 不就是交出來至少含k個的方案數了嗎?顯然不是,有重複的啊 比如1,3會求到交,而1,4.3,4也會 當時我就這崩了.看重複的有多少啊 對於求k個時交出來是k 1個的會算c k ...

bzoj 2839 集合計數

題意 乙個有n個元素的集合有2 n2 n 2n個不同子集 包含空集 現在要在這2 n2 n 2n個集合中取出若干集合 至少乙個 使得它們的交集的元素個數為k,求取法的方案數,答案模1000000007 題解 好題。一開始覺得應該很簡單,然而很快就證明了我很天真。設f k cn k i 12n kc2...