题目大意:
有 n≤2000 n ≤ 2000 个城市,每个城市有个权值 wi w i ,任意两个城市之间的道路数有 wi∗wj w i ∗ w j 条。对于每种生成树,设每个点的度数为 di d i ,其权值定义为 ∏di ∏ d i 。问所有无根生成树的权值和。答案对 109+7 10 9 + 7 取模。
解题思路:
主要说一下思路和推导过程。
考虑生成树中的一条边
(i,j)
(
i
,
j
)
有
wi∗wj
w
i
∗
w
j
种选择,那么一种生成树有
∏wdii
∏
w
i
d
i
种同构,所以一种生成树的权值其实是
∏(wdiidi)
∏
(
w
i
d
i
d
i
)
考虑prufer序列,一个prufer序列对应一种无根树,且一个点度数为
a
a
,就会在序列中出现 次,那么
考虑后半部分怎么算,即
将 (a1+1)⋯(an+1) ( a 1 + 1 ) ⋯ ( a n + 1 ) 展开,计算每个单项式的贡献,如 a1a2a3 a 1 a 2 a 3 ,那么有:
据此,我们可以推断出,原式就等于:
设 fk f k 表示选 k k 个 的乘积和,可以用 O(n2) O ( n 2 ) 的dp预处理出,那么
时间复杂度 O(n2) O ( n 2 )