题目大意
在一棵树上,定义一颗子树的首领是权值最大的节点,每个节点的权值唯一并且权值为[1,n],求首领一共有k个的方案数。
题解
各种思考树形dp。然而正解是概率dp。
让我们从概率的角度考虑这个问题。
对于一棵子树,令根节点是x。
令siz[x]表示x的子树大小。
这棵子树的首领是x的概率为1siz[x],而首领不是x的概率为siz[x]−1siz[x],那么从1到n进行dp。
定义dp[i][j]表示处理到i这个点,并且有j个首领的概率。
推导就比较简单了:
如果x成为首领 dp[i][j]=dp[i−1][j−1]∗1siz[i]
否则 dp[i][j]=dp[i−1][j]∗siz[i]−1siz[i]
对于除法,就利用逆元。
边界就是dp[0][0]=1。
由于题目求的是方案数,所以答案就是dp[n][k]∗n!
总结
这题真是概率dp的神题啊!
完全没有看出来。