大致题意:给你一棵 \(n\) 个点的树,求有多少棵 \(n\) 个点的树与它的边集交大小为 \(k\) 。
\(n\le 100\) 。
其实这个题和”数树”很像啊。
法 \(1\) :考虑 \(matrix-tree\) 定理。
我们直接构造一个完全图,不在原树上的边边权为 \(1\) ,否则边权为 \(x\) ,这样就能求出一个多项式,\(x^k\) 的系数即为答案。
直接重载多项式跑行列式不太行?我们考虑插值计算即可。
复杂度 \(O(n^4)\) 。
法 \(2\) :容斥/二项式反演,组合意义。
考虑 \(g_i\) 为所有钦定 \(i\) 条边的方案能造出的树的个数和。
\(f_i\) 为与原树交大小为 \(i\) 的树个数。
则 \(g_i=\sum f_jC(j,i)\) ,即 \(f_k=\sum g_i (-1)^iC(i,k)\) 。
考虑 \(g_i\) 怎么算。假设已经钦定了一个大小为 \(t\) 的边集,这些边形成了 \(n-t\) 棵树,令每一棵大小分别为 \(a_1,a_2,…,a_{n-t}\) 。
则一个经典结论是方案为 \(n^{-2}\prod (a_in)\) 。
\(\prod a_i\) 的经典组合意义就是在每个连通块选恰好一个点。
所以设计 \(dp_{i,j,0/1}\) 表示子树 \(i\) 内,钦定了 \(j\) 条边,\(i\) 所在联通块是否选了一个点,总方案数。
\(O(n^2)\) 求出,统计答案即可。
原文地址:http://www.cnblogs.com/Sakurajima-Mai/p/16829249.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性