生成函式 ARC106F Figures

2022-08-19 07:54:10 字數 1312 閱讀 7801

題目大意:

有\(n\)的點,每個點有乙個權值\(d_i\),表示這個點上有多少個孔。你可以連線\(n-1\)條邊,每條邊可以連線分別屬於兩個點的兩個孔。乙個孔不能連兩條邊。要求最後這樣使這\(n\)個聯通,即找到完全圖的乙個生成樹。

來自於prufer序列的乙個結論:在完全圖中,如果\(n\)個點的度數分別為\(d_1,d_2,\cdots,d_n\),那麼滿足這種條件的生成樹個數是

\[\frac^n(d_k-1)!}

\]吸收/提取恒等式:

\[\binom=\frac\binom

\]考慮在最後的一種生成樹中,\(n\)個點的度數分別為\(d_1,d_2,\cdots,d_n\)。因為每個點在選擇要連線的孔時是有序的,則這種方案的貢獻是:

\[\frac^n(d_k-1)!}\prod_^n\binomd_k!

\]注意到\(\sum\limits_^nd_k=2(n-1)\),所以事實上,我們可以構造出乙個卷積來求答案\(s\)。

\[ans=(n-2)![x^]\prod_^nf_k(x)

\]\[\begin

f_t(x)&=\sum_^\infty\binom\fracx^k\\

&=\sum_^\infty\binomk x^k\\

&=\sum_^\infty\binomd_tx^k\\

&=d_t\sum_^\infty\binomx^\\

&=d_tx\sum_^\infty\binomx^k\\

&=d_tx(1+x)^

\end

\]記\(s\)為所有\(d\)的和,\(t\)為所有\(d\)的積,我們有:

\[\begin

ans&=(n-2)![x^]\prod_^nd_kx(1+x)^\\

&=(n-2)![x^]tx^n(1+x)^\\

&=(n-2)!t[x^](1+x)^\\

&=(n-2)!t\binom\\

&=t(s-n)^\underline

\\\end

\]問題解決。時間複雜度\(o(n)\)

#includeusing namespace std;

typedef long long ll;

const ll mod=998244353;

int n;

ll sn,ans=1;

inline ll add(ll a,ll b)

inline ll mul(ll a,ll b)

int main()

for(int i=0;iprintf("%lld\n",ans);

}

arc 逆尤拉函式

由phi n n 1 1 p1 1 1 p2 1 1 pt 得n p1 p2 pt phi n p1 1 p2 1 pt 1 列舉質數,把phi n 除完,把括號裡的搞成1,最後的n就等於質數相乘。二需要特判,你可以除無限二,前面也可以乘無限二 但標程不對,沒分解 2的,所以我把return挪後了 ...

生成函式與指數生成函式

普通型生成函式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...

生成函式 母函式

根據定義,這個序列作為函式的係數,稱g x 就是序列的母函式。和一般意義上的函式相比,母函式的功能是計數。有這樣一道例題 到這一章為止,已知的計數法則就兩種,加法法則 或 和乘法法則 且 前者是分類思想,後者是分步。法1 分步來看,第乙個骰子有1 5種可能,因為兩個骰子之和是6,所以一旦第乙個骰子確...