在乙個 $n$ 個元素集合中的所有子集中選擇若干個,且交集大小為 $k$ 的方案數.
按照之前的套路,令 $f[k]$ 表示欽定交集大小為 $k$,其餘隨便選的方案數. 令 $g[k]$ 表示交集恰好為 $k$ 的方案數.
則有 $f[k]=\sum_^\binomg[k]$,反演得 $g[k]=\sum_^(-1)^\binomf[i]$
而 $f[k]=\binom2^}$,直接帶入求值即可.
code:
#include #define n 1000005
#define ll long long
using namespace std;
const ll mod=1000000007;
void setio(string s)
int a[n];
ll fac[n],inv[n],f[n],g[n],poww[n];
ll qpow(ll x,ll y)
ll inv(ll x)
ll c(int x,int y)
int main()
BZOJ 2839 集合計數 廣義容斥
在乙個 n 個元素集合中的所有子集中選擇若干個,且交集大小為 k 的方案數.按照之前的套路,令 f k 表示欽定交集大小為 k 其餘隨便選的方案數.令 g k 表示交集恰好為 k 的方案數.則有 f k sum binomg k 反演得 g k sum 1 binomf i 而 f k binom2...
BZOJ2839 集合計數(廣義容斥)
點此看題面 對於這種恰好為 k 的顯然想到容斥,去設 f i 為交集大小大於等於 i 的方案數,根據廣義容斥的式子就可以發現 ans sum n 1 c i kf i 於是只要考慮如何快速計算 f i 首先有個選出 i 個數的方案數 c n i 那麼選出的所有集合都必須包含這 i 個數,剩下 n i...
bzoj 2839 集合計數
題意 乙個有n個元素的集合有2 n2 n 2n個不同子集 包含空集 現在要在這2 n2 n 2n個集合中取出若干集合 至少乙個 使得它們的交集的元素個數為k,求取法的方案數,答案模1000000007 題解 好題。一開始覺得應該很簡單,然而很快就證明了我很天真。設f k cn k i 12n kc2...