考慮容斥,最後的答案為∑n
i=k(
−1)i
−k∗c
in∗c
ki∗(
22n−
i−1)
實際上-1和最後一部分並不需要解釋,然後我們看看如何證明這個的正確性。
關於普通的容斥原理,我們可以用二項式定理yy
當我們發現對於每乙個交集大小為n的選法,他最後被統計的次數是這個. ∑n
i=k(
−1)i
−kci
n∗ck
i由於我菜,就上uoj群問了一發,釗神說這似乎是證明二項式反演的啥啥玩意兒orz.
我們根據組合數的公式,有 ci
n∗ck
i=ck
n∗ci
−kn−
k那麼 ∑n
i=k(
−1)i
−kci
n∗ck
i=0(
k=∑n
i=k(
−1)i
−kck
nci−
kn−k
=0(k
=ckn∑ni
=k(−
1)i−
k∗ci
−kn−
k=0(
k=ck
n(1−
1)n−
k 考慮這個式子,當n>k的時候,他=0,當n=k時,他=1.這就說明我們最後只算了交集為k的情況.
#include
#include
const
int p = 1e9 + 7, n = 1e6 + 8;
int n, k;
typedef
long
long ll;
ll la = 2, res, jc[n], jc_rev[n];
ll c (int n, int m)
ll quick_power (ll a, int b)
int main ()
printf ("%lld\n", (res + p) % p);
return
0;}
bzoj2839 關於組合數的若干yy
考慮容斥,最後的答案為 n i k 1 i k c in c ki 22n i 1 實際上 1和最後一部分並不需要解釋,然後我們看看如何證明這個的正確性。關於普通的容斥原理,我們可以用二項式定理yy 當我們發現對於每乙個交集大小為n的選法,他最後被統計的次數是這個.n i k 1 i kci n c...
BZOJ2839 集合計數 容斥原理 組合數
乙個有n個元素的集合有2n個不同子集 包含空集 現在要在這2n個集合中取出若干集合 至少乙個 使得 它們的交集的元素個數為k,求取法的方案數,答案模1000000007。是質數喔 一行兩個整數n,k 一行為答案。3 2 樣例說明 假設原集合為 則滿足條件的方案為 資料說明 對於100 的資料,1 n...
Bzoj2839 集合計數 組合數學 容斥
答案是含有至少k個的 至少k 1個的 至少k 2個的 從n個數中選出k個作為交集中的數,是c n,k 這樣的集合共有2 2 n k 1個 2 n k 是包含選定的k個數的可選集合的數量,選取方案有2 2 n k 1個 不能有空集否則無法保證k個元素 所以ans c n,k c k,k 2 2 n k...