题目大意:

给定 \(m\) 棵无向树\(\left\{T_{1}=\left(V_{1}, E_{1}\right), T_{2}=\left(V_{2}, E_{2}\right), \cdots, T_{m}=\left(V_{m}, E_{m}\right)\right\}\)构成的森林。定义无向边集\(E^\ast = \left\{ \left( u, v \right) \mid u \in V_i, v \in V_j, i \neq j \right\}\).令 \(G=(V,E)\),其中 $ V = V_1 \cup V_2 \cup \cdots \cup V_m, E = E_1 \cup E_2 \cup \cdots \cup E_m \cup E^\ast$ .

你需要求出 $G $ 的 Hamilton 回路的数量。

对于每一颗树,先求出 \(ways_i\) 表示在这颗树上选出 \(i\) 条链的方案数。

现在的问题就是要把若干条链拼成一个环,同色不相邻。

先破环成链。对于一颗树,他的指数生成函数是 \(\sum_{i=1}^{n} f_i i! \sum_{j=0}^{i} (-1)^{j} \binom {i - 1} {j} \frac {x^{i-j}} {(i-j)!}\) ,成链答案就是若干个卷起来,成环的话最后还要减去首尾同色的答案。

review

本题中的指数生成函数又称"带容斥系数的生成函数",其关键是考虑广义的二项式反演 $ F(n,m) = \sum_{i,j} (-1)^{n-i+m-j} G(i,j)$ ,正确性可以不断的套一维的二项式反演.

与其类似的,设 $G(n_k) $ 为长度为 $ n $ 的排列,方案数是 $ \frac {n!} {n_1! n_2! .. n_k!} $ ,这一部分用 egf 就可以解决了.再考虑前面的系数,枚举与第一个位置相邻的同色联通块大小,算上此时的贡献.注意为 $ (-1)^{j} $ ,因为当 $ j = 0 $ 时候,贡献是正的,意义是不限制随便排列.

再考虑如何从 $ Seq $ 推到 $ Cyc $ ,对于长度为 $ len $ 的环,在容斥的时候一个合法的方案对应 $ len $ 个 $ Seq $ 的方案,对应位置除以 $ len $ 就可以了. (考虑 $ Seq_k $ 和 $ Cyc_k $ 对应位置的系数).

也可以直接在生成函数里面减去钦定头尾相同的贡献.

最新文章

  1. 开发人员必读openstack网络基础
  2. Json解析实例
  3. Linux基本权限学习
  4. 手机屏幕滑动效果框架——flipsnap
  5. 新手接触java
  6. MYSQL导入导出.sql文件
  7. html 标签学习
  8. (8)nehe教程2-多边形
  9. eclipse 编辑器的使用
  10. Android使用Fragment程序崩溃
  11. 晒下自己App广告平台积分墙收入,顺便点评几个广告平台
  12. oracle-行转列
  13. Visual Studio 2013 在使用 MVC5 无智能提示
  14. javscript上传图片前预览的方法setPreViewImage()
  15. sizeof,终极无惑(上)
  16. PHP22期基础班技术总结
  17. Centos 7 安装mysql后出现 ERROR 2002 (HY000)解决方案
  18. vue 2 仿IOS 滚轮选择器 从入门到精通 (一)
  19. [UOJ207]共价大爷游长沙
  20. SQLserver2008一对多,多行数据显示在一行

热门文章

  1. SpirngBoot--错误消息的定制
  2. .NET Window服务启动又马上停止,报错IO.FileNotFoundException
  3. Python之TensorFlow的基本介绍-1
  4. java之struts2之文件上传
  5. NEST 根据id查询
  6. 1+X学习日志——扇形2D效果
  7. 使用tmux管理终端的窗口
  8. Vue 默认IIS站点配置
  9. golang读写文件的几种方式
  10. POST请求接口实列