題目鏈結
二項式反演
首先 m 個顏色選出k個 最終答案要乘上cmk
c^k_m
cmk
,然後對於第乙個格仔我們知道有k中方案,對於之後的所有格仔我們有k−1
k - 1
k−1中所以總共的就是k∗(
k−1)
n−
1k*(k - 1)^
k∗(k−1
)n−1
這時我們求出來的是不超過顏色不超過k的方案數,然後我們就能用到二項式反演求出恰好有k種顏色的方案數,二項式反演就是求出不超過k和恰好是k的乙個方式。
**:
#include
using namespace std;
typedef
long
long ll;
const
int mod =
1e9+7;
const
int n =
1e6+5;
ll f[n]
,inv[n]
;ll quick
(ll a, ll b)
return ans;
}void
init()
inv[n -5]
=quick
(f[n -5]
, mod -2)
;for
(int i = n -
6; i >=
0; i --)}
ll c
(int n,
int m)
intmain()
/*int flag = -1;
for(int i = 1; i <= k ;i ++)*/
ll ans2 =1;
for(ll i = m; i >= m - k +
1; i --
) ans2 = ans2*inv[k]
%mod;
ans1 = ans1*ans2%mod;
printf
("%lld\n"
,ans1);}
}
二項式反演
先從反演原理出發,假如存在兩個數列 f,g 我們知道 f n sum limits n a times g i 則 g n sum limits n b times f i 恆成立,那麼我們由 f 推出 g 的過程叫做反演。下面我們來 一下上面兩個式子恆成立的條件,將左邊帶入右邊,那麼有 begin...
二項式反演
形式與多步容斥相似,公式與多步容斥類似,多步容斥公式為 a 1 cup a 2 cup.cup a n sum limits a i sum limits n 1 ig i g n sum limits n 1 if i 顯然這兩個公式是等價,也是相互推導的關係,因此我們得到了二項式反演的形式1 形...
Kings Colors 二項式反演
題目鏈結 題目大意 給定乙個n個節點的樹,給它染色並且使得相鄰節點異色。問恰好用k種顏色的染色方案數 恰好k種不是很好求,因為我們很難保證每種顏色都用到,於是我們先考慮求最多k種顏色。那麼就讓每個點和它的父親節點異色就可以了。也就是k k 1 n 1k k 1 k k 1 n 1 那麼我們令f i ...