这题的时候发现题解里有提到\(generalizations\ of\ Cayley's\ formula\)的,当场懵逼,Wikipedia里也就带到了一下,没有解释怎么来的,然后下面贴了篇论文

大概就是\(n\)个点\(k\)个联通块的森林,\(1,2,\cdots,k\)属于不同的联通块,这样不同的方案数共有\(k\cdot n^{n-k-1}\)种。

我自己用\(Prüfer\)序列脑补了半天没搞懂怎么来的,始终觉得感性理解是\(n^{n-k}\),然后就去看了下那个证明。

用\(F(n,k)\)表示那个方案数(\(n,k\)与前面意义相同),我们要证明
\[F(n,k)=k\cdot n^{n-k-1} \;\;\;\;\;\;(1)\]
证明基于下面这个公式,若\(n>1\)且\(1 \leq k \leq n\)则
\[F(n,k)=\sum_{j=0}^{n-k} {n-k \choose j} F(n-1,k+j-1) \;\;\;\;\;\;(2)\]
其中\(F(1,1)=1,F(n,0)=0(n \geq 1)\)
要证明上面的递推式,考虑一个\(n\)个点\(k\)个联通块,\(1,2,\cdots,k\)属于不同的联通块的森林,在这个森林中,一号节点可能和\(\{k+1,k+2,\cdots,n\}\)的任何子集相连,假设连了\(j\)个点,那么方案数就是\(n-k \choose j\),然后删掉一号点,此时有\(n-1\)个点,\(k+j-1\)个联通块,我们枚举\(j\),就得到了上面的式子。

再用一下数学归纳法就可以把(2)式变成(1)式了
当\(n=1\)时,两式显然相等
当\(n>1\)时,若\(F(n-1,i)=i \cdot (n-1)^{n-i-2}\),则由(2)可得
\[F(n,i)=\sum_{j=0}^{n-i} {n-i \choose j}(i+j-1)(n-1)^{n-i-j-1}=i \cdot n^{n-i-1}\;\;\;\;(3)\]
用一下二项式定理就行。


博主有话说:不得不承认这篇博文是烂尾,毕竟还不是很懂二项式定理QAQ,但感觉这个证明还挺精巧的。

Codeforces 1109D: generalizations of Cayley's formula证明的更多相关文章

  1. Prufer codes与Generalized Cayley's Formula学习笔记

    \(Prufer\)序列 在一棵\(n\)个点带标号无根树里,我们定义这棵树的\(Prufer\)序列为执行以下操作后得到的序列 1.若当前树中只剩下两个节点,退出,否则执行\(2\) 2.令\(u\ ...

  2. Prufer codes与Generalized Cayley's Formula

    Prufer序列 在一棵n个节点带标号树中,我们认为度数为1的点为叶子.n个点的树的Prufer序列是经过下面流程得到的一个长度为n-2的序列. 1.若当前树中只剩下两个点,退出,否则执行2. 2.找 ...

  3. Codeforces 1109D. Sasha and Interesting Fact from Graph Theory

    Codeforces 1109D. Sasha and Interesting Fact from Graph Theory 解题思路: 这题我根本不会做,是周指导带飞我. 首先对于当前已经有 \(m ...

  4. Codeforces Round #801 (Div. 2) C(规律证明)

    Codeforces Round #801 (Div. 2) C(规律证明) 题目链接: 传送门QAQ 题意: 给定一个\(n * m\)的矩阵,矩阵的每个单元的值为1或-1,问从\((1,1)\)开 ...

  5. Codeforces Gym 100610 Problem E. Explicit Formula 水题

    Problem E. Explicit Formula Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...

  6. codeforces 1269D. Domino for Young (二分图证明/结论题)

    链接:https://codeforces.com/contest/1269/problem/D 题意:给一个不规则的网格,在上面放置多米诺骨牌,多米诺骨牌长度要么是1x2,要么是2x1大小,问最多放 ...

  7. Codeforces 1109D. Sasha and Interesting Fact from Graph Theory 排列组合,Prufer编码

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF1109D.html 题意 所有边权都是 [1,m] 中的整数的所有 n 个点的树中,点 a 到点 b 的距离 ...

  8. Codeforces 1109D Sasha and Interesting Fact from Graph Theory (看题解) 组合数学

    Sasha and Interesting Fact from Graph Theory n 个 点形成 m 个有标号森林的方案数为 F(n, m) = m * n ^ {n - 1 - m} 然后就 ...

  9. Sasha and Interesting Fact from Graph Theory CodeForces - 1109D (图论,计数,Caylay定理)

    大意: 求a->b最短路长度为m的n节点树的个数, 边权全部不超过m 枚举$a$与$b$之间的边数, 再由拓展$Caylay$定理分配其余结点 拓展$Caylay$定理 $n$个有标号节点生成k ...

随机推荐

  1. MongoDB 学习笔记之 查询表达式

    查询表达式: db.stu.find().count() db.stu.find({name: 'Sky'}) db.stu.find({age: {$ne: 20}},{name: 1, age: ...

  2. js匿名函数自执行的好处

    我们知道,在创建一个函数时如果要用到变量来存取信息的话,要尽量使用局部变量. 因为一方面局部变量会随着函数的执行结束被销毁:另一方面在不执行函数的时候也不会创建这个局部变量,对节省空间资源有很大的好处 ...

  3. MySQL 视图(合并多表数据)引发的严重性能问题

    问题背景: 一.客户环境连续多次出现性能问题,系统登入异常,数据库CPU告警. 处理过程: 1>协助排查数据库性能问题时发现如下两个较频繁的SQL导致严重的性能问题(均使用了视图合并多表数据): ...

  4. 如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)

    遍历删除List中符合条件的元素主要有以下几种方法: 普通for循环 增强for循环 foreach 迭代器iterator removeIf 和 方法引用 其中使用普通for循环容易造成遗漏元素的问 ...

  5. 如何去除CFormView的Scrollbar

    第一种方法: 重载 OnSize(UINT nType, int cx, int cy) 在CFormView::OnSize(nType, cx, cy)下面添加一句 ShowScrollBar(S ...

  6. C语言入门-结构类型

    一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...

  7. django渲染高阶

    08.16自我总结 django渲染高阶 一.利用母版渲染 1.创建母版文件 如:stamper.html <!DOCTYPE html> <html lang="en&q ...

  8. App自动化之坐标定位

    1.如下图定位"去看看"这个按钮的坐标,可以看到右侧bonds属性:[374,831][654,906] 2.点右上角"搜索"按钮,查看bonds属性:[615 ...

  9. [CF494B] Obsessive String

    Hamed has recently found a string t and suddenly became quite fond of it. He spent several days tryi ...

  10. java命令行导出、导入sql文件

    @IocBean public class SqlCommandModel{ //用户名 @Inject("java:$conf.get('jdbc.username')") pr ...