/* mod must be a prime*/
const int mod = 1e9 + 7;
namespace combinatory
ll inv(ll x)
ll fac[maxn], invfac[maxn];
void initc(int n)
ll a(ll n, ll m)
ll c(ll n, ll m)
// ll d[maxn];
// void initd(int n) else
// d[i] = (1ll * i * d[i - 1] + 1) % mod;
// }
// }
}using namespace combinatory;
圓排列:n個不同的球,取m個進行圓排列,先用組合數取出m個,然後規定圓的開頭是最小的元素,那麼剩下的元素可以任意排列,故答案為 \(c_n^m\cdot a_^=\frac\cdot(m-1)!=\frac=\frac\)
二項式反演:
若 \(f(n)=\sum\limits_^\binomg(i)\)
則 \(g(n)=\sum\limits_^(-1)^\binomf(i)\)
通常用 \(f(i)\) 表示至多, \(g(i)\) 表示恰好,然後用二項式反演求出來。
這裡的要求是這個係數恰好是二項式係數。
求至少的話,要再進行一套轉換。
隔板法:x個相同的小球,有y個不同的盒子,每個盒子可以為空,求有多少種方案數?把y個不同的盒子視作y-1個不同的隔板,然後把小球視作不同的,全排列有 \(a_^\) 種,然後除以隔板的全排列(隔板之間沒有區別),再除以小球的全排列(小球之間也沒有區別),最後在兩側再加入兩個隔板,然後兩個隔板之間的就是這個盒子分配到的球數,也就是 \(c_^\) 。
常用的求和:
\(c_n^m = c _^+c _^\)
\(mc_n^m = nc _^\)
二項式定理: \(\sum\limits_^nc_n^i=c_n^0+c_n^1+c_n^2+……+c_n^n = 2^n\)
類似求和 \(\sum\limits_^n(-1)^ic_n^i=c_n^0-c_n^1+c_n^2-……+(-1)^nc_n^n = 0\) (奇數項求和=偶數項求和)
\(\sum\limits_^n2^ic_n^i = 3^n\)
利用 \(c_n^mc_m^k=c_n^kc_^\) ,加上二項式定理,可以得到下式
\(1c_n^1+2c_n^2+3c_n^3+……+nc_n^n =n2^\)
\(\sum\limits_ic_n^i = \sum\limits_c_i^1c_n^i = \sum\limits_c_n^ic_i^1 \\ = \sum\limits_c_n^1c_^ = c_n^1\sum\limits_^n c_^ \\ = c_n^1\sum\limits_^ c_^i \\ = n2^ \\\)
\(1^2c_n^1+2^2c_n^2+3^2c_n^3+……+n^2c _n^n =n(n+1)2^\)
\(\frac-\frac+\frac+……+(-1)^\frac =1 + \frac+ \frac+……+ \frac\)
\((c_n^0)^2+(c_n^1)^2+(c_n^2)^2+……+(c _n^n)^2 = c_^n\)
n個球選x個染黑,黑球之間位置差至少為k的方案:在n-(x-1)(k-1)裡面選x個黑球,染黑之後在前x-1個黑球後緊跟k-1個白球,得一一對應。
組合數學 組合設計泛談
組合數學 組合設計泛談 與旋轉矩陣相關的數字問題 從寇克曼女生問題講起 旋轉矩陣涉及到的是一種組合設計 覆蓋設計。而覆蓋設計,填裝設計,斯坦納系,t一設計都是離散數學中的組合優化問題。它們解決的是如何組合集合中的元素以達到某種特定的要求。為了使讀者更容易明白這些問題,下面先從一道相當古老的數學名題講...
數學 組合數學 Lucas定理 卡特蘭數
n n的方格,從左上到右下畫一條線。乙個機械人從左上走到右下,只能向右或向下走。並要求只能在這條線的上面或下面走,不能穿越這條線,有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10007的結果。卡特蘭數 lucas定理 此題就是乙個模板題 include include include...
組合數學 組合數問題(四類彙總)
給定n n 組詢問,每組詢問給定兩個整數a,b a,b 請你輸出 n a,b n a,b cab mod 109 7 的值。n a,b cab mod 109 7 1 n 10000 1 n 10000,1 b a 2000 1 b a 2000 n a,b cab mod 109 7 1 n 10...