Address
Meaning
- 给定一个 n n n 元正整数集合 S S S
- 对于任意的 1 ≤ i ≤ m 1\le i\le m 1≤i≤m
- 求有多少棵不同(形态不同或点权不同)的点带权无标号有根二叉树的所有点权和为 i i i (所有的点权都在集合 S S S 内)
- 1 ≤ n , m , S 内 的 元 素 ≤ 1 0 5 1\le n,m,S内的元素\le10^5 1≤n,m,S内的元素≤105
Solution
- 先列出 DP 式子: f [ i ] f[i] f[i] 表示点权和为 i i i 的方案数, f [ 0 ] = 1 f[0]=1 f[0]=1
- f [ i ] = ∑ k ∈ S , k ≤ i ∑ j = 0 i − k f [ j ] f [ i − k − j ] f[i]=\sum_{k\in S,k\le i}\sum_{j=0}^{i-k}f[j]f[i-k-j] f[i]=k∈S,k≤i∑j=0∑i−kf[j]f[i−k−j]
- 设 f f f 的生成函数为 F ( x ) F(x) F(x) ,则
- f [ i ] = ∑ k ∈ S , k ≤ i [ x i − k ] F ( x ) 2 f[i]=\sum_{k\in S,k\le i}[x^{i-k}]F(x)^2 f[i]=k∈S,k≤i∑[xi−k]F(x)2
- 再设生成函数
- G ( x ) = ∑ k ∈ S x k G(x)=\sum_{k\in S}x^k G(x)=k∈S∑xk
- 则
- f [ i ] = ∑ k = 1 i [ x k ] G ( x ) [ x i − k ] F ( x ) 2 = [ x i ] G ( x ) F ( x ) 2 f[i]=\sum_{k=1}^i[x^k]G(x)[x^{i-k}]F(x)^2=[x^i]G(x)F(x)^2 f[i]=k=1∑i