整理的算法模板合集: ACM模板
实际上是一个全新的精炼模板整合计划
每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.14 生成函数 + 多项式求逆
Problem
Solution
题目要求的是 n n n 个点的无向连通图的方案数,直接做无从下手,我们考虑有没有什么能直接算出来的相关的方案数,再转换为无向连通图的方案数。
那么 n n n 个点的无向图的方案数可以直接求嘛?我们设 g n g_n gn 表示无向图的方案数,不一定连通,显然因为不一定连通,所以我们从这 n n n 点中任选两个点,它们之间的边的情况,都有有边,没有边,两种方案,所以显然总方案数为 2 C N 2 2^{C_N^{\ 2}} 2CN 2 种。
找到了一个可以直接计算的与题目中想要求的答案有些关联的函数,那么回到问题本身,我们设 f n f_n fn 表示有 n n n 个点的无向连通图的方案数,我们考虑它们之间的联系。
显然 g n g_n gn 是包含 f n f_n fn 的, g n g_n gn 含有更多不连通的情况,那么我们就可以选定一个点,枚举该点所在的连通块的点数 i i i,显然该连通块里的方案数为 f i f_i fi,那么剩下的点就没有要求一定连通,即方案数为 g n − i g_{n-i} gn−i,所以显然有:
g n = ∑ i = 1 n C n − 1 i − 1 f i g n − i g_n = \sum\limits_{i=1}^n C_{n-1}^{\ i-1}f_ig_{n-i} gn=i=1∑nCn−1 i−1fign−i
考虑展开组合数化简一下得:
g n ( n − 1 ) ! = ∑ i = 1 n f i ( i − 1 ) ! g n − i ( n − i ) ! \frac{g_n}{(n-1)!} = \sum\limits_{i=1}^{n}\frac{f_i}{(i-1)!}\frac{g_{n-i}}{(n-i)!} (n−1)!gn=i=1∑n<