码迷,mamicode.com
首页 > 其他好文 > 详细

子树问题(DP)

时间:2019-11-02 11:52:04      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:jsb   orm   lin   ima   mda   tps   convert   class   sum   

技术图片
技术图片
技术图片

这题显然是DP

首先,\(dp[i][j]\)表示树深度小于等于i,树的大小为j的有根树的数量$

可以循环枚举根节点编号次大的子树的大小k。

\(dp[i][j]=\sum^{j-1}_{k=1}dp[i][j-k]*dp[i-1][k]*C^{k-1}_{j-2}\)

注释:第一个dp表示的是除去这棵大小为k的子树的有根树数量,第二个dp表示的是这棵大小为k的子树的有根树数量,最后要给每一个点分配编号,只用分编号给(k的子树)或(除去k的剩余树),所以乘一个\(C^{k-1}_{j-2}\)

因为一开始设的是深度小于等于i,所以最后要融斥去掉重复的树的数量。

因为一开始没有考虑这种树的好坏,所以当大小j是坏的时候,dp[i][j]=0。

子树问题(DP)

标签:jsb   orm   lin   ima   mda   tps   convert   class   sum   

原文地址:https://www.cnblogs.com/2017gdgzoi44/p/11781020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!