好题啊!

数树

  • \(\text{opt = 0, 6 pts.}\)

显然答案为 \(y^{n-|E_1∩E_2|}\) 。

  • \(\text{opt = 1, 47 pts.}\)
\[\sum_{E_2}y^{n-|E_1∩E_2|}
\]

考虑该容斥式:\(f(S)=\sum\limits_{T\subset S}\sum\limits_{P\subset T}(-1)^{|T|-|P|}f(P)\) ,则:

\[\sum_{E_2}\sum_{T\subset E_1∩E_2}\sum_{P\subset T}(-1)^{|T|-|P|}y^{n-|P|}
\]

令 \(g(T)\) 表示包含 \(T\) 的 \(E_2\) 个数。

\[\sum_{T\subset E_1}g(T)\sum_{P\subset T}(-1)^{|T|-|P|}y^{n-|P|}
\]
\[\sum_{T\subset E_1}g(T)y^{n-|T|}\sum_{P\subset T}(-y)^{|T|-|P|}
\]
\[\sum_{T\subset E_1}g(T)y^{n-|T|}\sum_{k=0}^{|T|}\binom{|T|}{k}1^k(-y)^{|T|-k}
\]
\[\sum_{T\subset E_1}g(T)y^{n-|T|}(1-y)^{|T|}
\]

考虑一个定理:给定 \(n\) 个点的森林,有 \(k\) 个连通分量,第 \(i\) 个连通分量的大小为 \(a_i\) ,则由 \(\text{prufer}\) 序列得:生成树的个数为 \(n^{k-2}\prod\limits_{i=1}^{k}a_i\) 。

代回原式,记 \(k=n-|T|\) ,表示连通分量个数:

\[\sum_{T\subset E_1}y^k(1-y)^{n-k}n^{k-2}\prod_{i=1}^{k}a_i
\]
\[\frac{(1-y)^n}{n^2}\sum_{T\subset E_1}\prod_{i=1}^{k}\frac{ny}{1-y}a_i
\]

发现一个大小为 \(a_i\) 的连通分量对答案的贡献为 \(Ka_i\) ,其中 \(K=\frac{ny}{1-y}\) 为一个常量。

考虑贡献的组合意义,大小为 \(a_i\) 的连通分量贡献相当于在这个连通分量重选取一个点,产生 \(K\) 的乘积贡献。

据此,可进行 \(dp\) :\(\mathrm{f[u][0/1]}\) 表示在 \(u\) 的子树中,当前连通分量是否已经做出贡献的答案。这里为了方便转移,当前连通分量若已做出贡献,就计入答案。

int f[N][2], K;
void dfs(int u, int fa) {
f[u][0] = 1, f[u][1] = K;
for (auto v: adj[u]) {
if (v == fa) continue;
dfs(v, u);
f[u][1] = (1ll * f[u][0] * f[v][1] + 1ll * f[u][1] * f[v][0] + 1ll * f[u][1] * f[v][1]) % mod;
f[u][0] = (1ll * f[u][0] * f[v][0] + 1ll * f[u][0] * f[v][1]) % mod;
}
}
  • \(\text{opt = 2, 47 pts.}\)
\[\sum_{E_1}\sum_{E_2}y^{n-|E_1∩E_2|}
\]
\[\sum_{E_1}\sum_{E_2}\sum_{T\subset E_1∩E_2}\sum_{P\subset T}(-1)^{|T|-|P|}y^{n-|P|}
\]

这一段类似 \(\text{opt = 2}\) ,直接快进:

\[\sum_{T}g^2(T)y^{n-|T|}(1-y)^{|T|}
\]
\[\sum_{T}y^k(1-y)^{n-k}n^{2(k-2)}\prod_{i=1
}^{k}a_i^2\]
\[\frac{(1-y)^n}{n^4}\sum_{T}\prod_{i=1}^{k}\frac{n^2y}{1-y}a_i^2
\]

换个角度考虑,每个连通分量是无序的,相当于有 \(n\) 个有标号小球扔进 \(k\) 个无标号盒子,盒子不为空。

对于一个装有 \(a\) 个球的盒子,一个生成树对其贡献为 \(\frac{n^2y}{1-y}a^2\) 作为乘积,有 \(a^{a-2}\) 个生成树,因此总乘积贡献为 \(\frac{n^2y}{1-y}a^a\) 。

显然,总方案的 \(EGF\) 等于 \(exp\) 单个盒子的 \(EGF\) ,即:

\[F=\sum\limits_{i=1}^{\infty}\frac{n^2y}{1-y}i^i\frac{x^i}{i!}
\]
\[G=exp(F)
\]

答案即为:

\[\frac{(1-y)^n}{n^4}n![x^n]G
\]

套多项式 \(exp\) 即可。

时间复杂度 \(O(nlogn)\) 。

最新文章

  1. html5上传图片(二)一解决部分手机拍照上传图片转向问题
  2. 【原创】Silverlight DataGrid对核心控件DataGrid的任意单元格进行获取和设置分析。
  3. 创意十足的web布局及交互设计
  4. MVC中的成员资格,授权,安全性
  5. android中AVD的使用
  6. Mycat配置文件rule.xml
  7. JS回车键处理
  8. TFS2012常见问题及解答
  9. ipconfig命令
  10. JQ插件之imgAreaSelect实现对图片的在线截图功能(java版)
  11. Ugly Number,Ugly Number II,Super Ugly Number
  12. N维法向量与N维超平面的关系的简单证明(日志二)
  13. SLF4J源码解析-LoggerFactory(一)
  14. 利用layer实现MVC页面数据互交提示弹框
  15. JSP中的“小饼干”Cookie,用来存储数组的方式(下方已String类型的数组为例:)
  16. 结合Socket实现DDoS攻击
  17. Python开发【第一篇】基础题目二
  18. 2018-2019-2 20175218 实验一《Java开发环境的熟悉》实验报告
  19. openssl dhparam(密钥交换)
  20. vue-cli: render:h => h(App)是什么意思

热门文章

  1. pdm的说明
  2. iOS开发 将html 富文本文字 转换成oc 的富文本
  3. SpringMVC-拦截器快速入门
  4. 使用 Jenkins 进行持续集成与发布流程图
  5. oracle system,sys用户 忘记密码,怎么修改密码
  6. Android第十一、十二周作业
  7. CentOS8 AnolisOS8 yum安装 No match for argument: htop Error: Unable to find a match: htop
  8. 接口测试实战| GET/POST 请求区别详解
  9. python数据处理-matplotlib入门(2)-利用随机函数生成变化图形2
  10. Bugku CTF练习题---加密---凯撒部长的奖励