Description:
给你一些\(x < y\) ,\(x=y\) 的信息,求可能的原序列不同关系数
(每个\(x\)最多有一个\(x 的信息)
Hint:
$ n \le 100 $
Solution:
知道是树型dp,但还是不会
注意到等于的信息用并查集直接算作一个点就行,现在就是考虑这个<的条件
显然会形成一棵树,怎么算不同方案呢?
我们设\(f[i][j]\) 表示i的子树的序列用"<"分成了j段的方案数
这样dp可以很方便的合并子树信息:
考虑现在合并f[v1][x],f[v2][y],则第一段显然为i本身
剩下的j-1段由v1选x段,由于非空,再剩下的都选v2,v2多出来的再选
所以:
\[f[i][j]=f[v1][x]*f[v2][y]*C_{j-1}^{x-1}*C_{x-1}^{y-i+x}
\]
(为什么是x-1,因为背包包含了i)
就是个树型背包
#include