假硕讲了个prufer编码和Caylay公式

我为了证明prufer编码没用

所以用矩阵树定理证明了Caylay公式

让我们用矩阵树定理推一波

首先这个小猴打架最后会打成一棵树,这棵树是N个点的完全图的生成树

所以用矩阵树定理

构建矩阵(N个点的完全图)

这是我们的邻接矩阵

\(\begin{vmatrix}0&1&1&\cdots&1\\1&0&1&\cdots&1\\1&1&0&\cdots&1\\\vdots&\vdots&\vdots&\ddots&\vdots\\1&1&1&\cdots&0\end{vmatrix}\)

然后是我们的度数矩阵

\(\begin{vmatrix}N-1&0&0&\cdots&0\\0&N-1&0&\cdots&0\\0&0&N-1&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&N-1\end{vmatrix}\)

所以说我们的基尔霍夫矩阵是N*N的下面矩阵:

\(\begin{vmatrix}N-1&-1&-1&\cdots&-1\\-1&N-1&-1&\cdots&-1\\-1&-1&N-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&N-1\end{vmatrix}\)

然后我们开始大力跑代数余子式

划掉第N行第N列的元素得到一个(N-1)*(N-1)的矩阵:

\(\begin{vmatrix}N-1&-1&-1&\cdots&-1\\-1&N-1&-1&\cdots&-1\\-1&-1&N-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&N-1\end{vmatrix}\)

注意这个矩阵是(N-1)*(N-1)的

然后对这个矩阵进行各种初等变换(初等乱搞)(以下方法参考《线性代数》)

我们先让第一行成为所有(N-1)行的和(初等变换第三条)

\(\begin{vmatrix}1&1&1&\cdots&1\\-1&N-1&-1&\cdots&-1\\-1&-1&N-1&\cdots&-1\\\vdots&\vdots&\vdots&\ddots&\vdots\\-1&-1&-1&\cdots&N-1\end{vmatrix}\)

然后让第2~(N-1)行都加上第一行(初等变换第三条)

\(\begin{vmatrix}1&1&1&\cdots&1\\0&N&0&\cdots&0\\0&0&N&\cdots&0\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&0&\cdots&N\end{vmatrix}\)

消成了上三角矩阵(美滋滋)

所以行列式就是对角线元素相乘,有1个1,(N-2)个N

所以生成树个数为\(N^{N-2}\)

然后

考虑生成树的每一条边

小猴打架可以按照任意的顺序

所以每一种生成树的产生顺序就是他的边的排列个数,

有\((N-1)\)条边所以排列为\((N-1)!\)

所以最后答案是\(N^{N-2}(N-1)!\)

#include <bits/stdc++.h>
using namespace std;
#define p 9999991
long long n, ans = 1; int main()
{
scanf("%lld", &n);
for (int i = 1; i <= n - 2; i++)
ans = ans * n % p * (i + 1) % p;
printf("%lld\n", ans);
return 0;
}

让我们一起膜拜大佬林瑞堂@olinr

luogu4430 小猴打架的更多相关文章

  1. BZOJ1430: 小猴打架

    1430: 小猴打架 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 328  Solved: 234[Submit][Status] Descripti ...

  2. bzoj 1430: 小猴打架 -- prufer编码

    1430: 小猴打架 Time Limit: 5 Sec  Memory Limit: 162 MB Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是 ...

  3. 【BZOJ 1430】 1430: 小猴打架 (Prufer数列)

    1430: 小猴打架 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 625  Solved: 452 Description 一开始森林里面有N只互不相 ...

  4. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  5. bzoj 1430: 小猴打架

    1430: 小猴打架 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 634  Solved: 461[Submit][Status][Discuss] ...

  6. bzoj 1430 小猴打架 prufer 性质

    小猴打架 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 709  Solved: 512[Submit][Status][Discuss] Descri ...

  7. [bzoj1430]小猴打架_prufer序列

    小猴打架 bzoj-1430 题目大意:题目链接. 注释:略. 想法: 我们发现打架的情况就是一棵树. 我们只需要把确定树的形态然后乘以$(n-1)!$表示生成这棵树时边的顺序. 一共$n$个节点我们 ...

  8. bzoj1430: 小猴打架(prufer序列)

    1430: 小猴打架 题目:传送门 简要题意: n只互不相识的猴子打架,打架之后就两两之间连边(表示已经相互认识),只有不认识(朋友的朋友都是朋友)的两只猴子才会打架.最后所有的猴子都会连成一棵树,也 ...

  9. P4430 小猴打架、P4981 父子

    prufer编码 当然你也可以理解为 Cayley 公式,其实这个公式就是prufer编码经过一步就能推出的 P4430 小猴打架 P4981 父子 这俩题差不多 先说父子,很显然题目就是让你求\(n ...

随机推荐

  1. Cassandra 学习三 数据模型

       Cassandra如何存储数据的概述. 集群(Cluster) ·Cassandra数据库分布在几个一起操作的机器上.最外层容器被称为集群.对于故障处理,每个节点包含一个副本,如果发生故障,副本 ...

  2. 第六章 Java性能调优工具(待续)

    Java性能调优工具 Windows工具 JDK命令行工具 JConsole工具 Visual VM多合一工具 Visual VM对QQL的支持 MAT内存分析工具 MAT对QQL的支持 JProfi ...

  3. javascipt——基础知识——基本数据类型和逻辑运算

    进制转换:http://www.topthink.com/topic/504.html javascript的数据类型分为基本数据类型和非基本数据类型(对象) 一.基本数据类型: 包括以下部分:数字. ...

  4. C# Remoting 简单实现

    此处下载源代码(VS2010编译通过)   http://files.cnblogs.com/files/qqhfeng/%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8%E6 ...

  5. js将数组中一个或多个字段相同的子元素中合并

    最近js中遇到js将数组中一个或多个字段相同的子元素中合并,相信很多朋友也有遇到,大家可能有多种方法,我在这里记录一个相对简单的方法,当然大家如有其它更好的方法,请提出来大家共同学习. //将经济事项 ...

  6. dp-矩阵连乘

    参考:http://blog.csdn.net/liufeng_king/article/details/8497607 使用备忘录算法复杂度降至O(n^3) #include<stdio.h& ...

  7. 修改Win10默认窗口背景色为护眼色的方法

    按Windows键+R,打开“运行”对话框,输入regedit: 修改[HKEY_CURRENT_USER\Control Panel\Colors]下Windows键值为 199 237 204, ...

  8. 外部访问docker内部容器centos的http服务

    1.创建容器 docker run -d -it -h dd -p --name bbbbb centos dd 是用户名 --name 后面是容器名字 2.在我们开始安装Nginx及其他所需软件之前 ...

  9. wpf仿qq边缘自动停靠,支持多屏

    wpf完全模仿qq边缘自动隐藏功能,采用鼠标钩子获取鼠标当前状态,在通过当前鼠标的位置和点击状态来计算是否需要隐藏. 以下是实现的具体方法: 一.鼠标钩子实时获取当前鼠标的位置和点击状态 /// &l ...

  10. 100211D Police Cities

    传送门 分析 看到这个题我们的第一反应自然是Tarjan缩点,在这之后我们可以发现实际只要在缩点之后所有出度或入度为0的点布置警察局就可以达到要求,我们用dpij表示考虑前i个出度或入度为0的点共布置 ...