熟知指數生成函式(以下簡稱為egf)定義為:
\[f(x)=\sum\limits_^\infty\dfracx^n
\]並且兩個egf相乘為 \(f(x)g(x)\) 是數列 \(\left\\dbinoma^kb^\right\}_^\infty\) 的egf
因為我們將 \(\text^x\) 再原點處進行泰勒展開得到了數列 \(\_^\infty\) 的無窮級數形式
所以如果乙個數列為 \(\_^\infty\) 那麼它egf的封閉形式為 \(\text^x\)
乙個egf \(f(x)=\sum\limits_^\infty\dfracx^n\) 同時也是數列 \(\left\\right\}_^\infty\) 的ogf
我們考慮乙個長度為 \(n\) 數列的排列數(數列中的數互不相同)
顯而易見,排列數是 \(n!\)
寫成egf的形式也就是
\[f(x)=\sum\limits_^\infty\dfracx_n=\dfrac
\]那麼我們再考慮乙個長度為 \(n\) 的數列的圓排列數
顯然對於每個排列,我們將其旋轉 \(n\) 次的到的圓排列相同
顯然,圓排列數是 \((n-1)!\)
寫成egf的形式:
\[\begin
g(x)&=\sum\limits_^\infty\dfracx_n
\\&=\sum\limits_^\infty\dfrac
\\&=\ln\left(\dfrac\right)
\end
\]是不是發現了顯然可以 \(\exp\) ?
\(\exp g(x)=f(x)\)
在學習群論的時候,我們知道每個置換 \(a\in s_n\) 或是乙個迴圈置換,或是若干個不相交的迴圈置換的乘積
此時我們把每個排列看成乙個置換
長度為 \(n\) 的排列數方案數即是把其分成 \(k\) 個集合,然後每個集合的圓排列的方案數的積
p4841 [集訓隊作業2013]城市規劃
熟知 \(n\) 個點的有標號無向圖的個數是 \(2^\binom\)
每個無向圖可以看作若干個集合構成,每個集合裡的元素同屬乙個連通圖
設 \(n\) 個點的有標號無向圖的egf是 \(f(x)\),\(n\) 個點的有標號無向連通圖的egf是 \(g(x)\)
此時我們很容易仿照上文得到 \(\exp g(x)=f(x)\),即 \(g(x)=\ln f(x)\)
直接多項式 \(\ln\) 即可
#include#include#include#include#include#define n 1000001
#define inf 1100000000
#define kafuu return
#define chino 0
#define fx(l,n) inline l n
#define set(l,n,ty,len) memset(l,n,sizeof(ty)*len)
#define cpy(f,t,ty,len) memcpy(t,f,sizeof(ty)*len)
#define r register int
#define c const
#define int long long
using namespace std;
c int mod=1004535809,pr=3;
int n,br[n],ppr[n],x=1,invp,invx,a[n],b[n],fc[n];
fx(int,gi)()
while(c>='0'&&c<='9') s=(s<<3)+(s<<1)+(c-'0'),c=getchar();
return s*f;
}fx(int,pow)(int a,int b=mod-2)
return ans;
}fx(void,ntt)(int *f,c short r,c int x)
signed main()
生成函式與指數生成函式
普通型生成函式gf 序列 的生成函式為 sum limits a ix i 常用gf的收斂形式 1.sum limits x i frac 序列 的生成函式 2.sum limits binomx i 1 x n 序列 的生成函式,就是二項式定理 3.sum limits binomx i frac...
POJ 3734 Blocks 指數型生成函式
題意 有紅球,藍球,綠球,黃球,其中紅球和綠球都只能選擇偶數個,求選擇 n 個球擺成一排有多少種方案數.我們構造關於這些球的指數型生成函式 f x sum frac x i 其中 a 表示選擇 i 個球的不同排列數.紅與綠 1 frac frac frac 黃與藍 1 frac frac e x 那...
POJ 3734 Blocks 指數型生成函式
題意 有紅球,藍球,綠球,黃球,其中紅球和綠球都只能選擇偶數個,求選擇 n 個球擺成一排有多少種方案數.我們構造關於這些球的指數型生成函式 f x sum frac x i 其中 a 表示選擇 i 個球的不同排列數.紅與綠 1 frac frac frac 黃與藍 1 frac frac e x 那...