题目链接
做法
发现每个树上的点要对应不同的图上的点不好处理,我们考虑求树上的点可以对应相同的点。
我们以$g_i$表示树上的点可以对应相同的点,且对应的点中没出现状态$i$的方案数。
那么根据容斥我们知道最后的答案即为
所以我们先枚举状态i,在用$f_{j,k}$表示做完j的子树,j这个点的对应k的方案数。转移的话先枚举自己对应哪个点,然后分别计算每个子树的贡献即可。
总复杂度$O(2^n*n^3)$
代码
1 |
|
Never waste talents
发现每个树上的点要对应不同的图上的点不好处理,我们考虑求树上的点可以对应相同的点。
我们以$g_i$表示树上的点可以对应相同的点,且对应的点中没出现状态$i$的方案数。
那么根据容斥我们知道最后的答案即为
所以我们先枚举状态i,在用$f_{j,k}$表示做完j的子树,j这个点的对应k的方案数。转移的话先枚举自己对应哪个点,然后分别计算每个子树的贡献即可。
总复杂度$O(2^n*n^3)$
1 | #include<cstdio> |