码迷,mamicode.com
首页 > 其他好文 > 详细

「Luogu4430」小猴打架

时间:2019-01-20 18:02:20      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:.com   现在   clu   http   inline   ...   class   等价   ref   

「Luogu4430」小猴打架

题目描述

一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N-1次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。

输入输出格式

输入格式:

一个整数N。

输出格式:

一行,方案数mod 9999991。

输入输出样例

输入样例#1

4

输出样例#1

96

说明

50%的数据N<=10^3。 100%的数据N<=10^6。

Code

#include <cstdio>
using namespace std;
typedef long long ll;

const ll mod=9999991;
int n;
ll ans=1;

int main()
{
    scanf("%d",&n);
    for(register int i=1;i<=n-2;++i)ans=ans*n%mod;
    for(register int i=1;i<=n-1;++i)ans=ans*i%mod;
    printf("%lld",ans);
    return 0;
}

...

???

Solution

题目等价于求一个有\(n\)个节点的完全图的生成树的方案有多少个

两个方案不同当且仅当生成树中有至少一条边不同,或者生成树相同,而加边的顺序不同

前置知识:
Cayley公式:对于一个有\(n\)个节点的完全图\(G\),它的生成树个数有\(n^{n-2}\)

证明需要用到prufer编码,其实matrix-tree定理也可以证明

下面是两篇分别通过prufer编码和matrix-tree定理证明Cayley的博客:
经典证明:Prüfer编码与Cayley公式
题解 P4430 【小猴打架】

然后是这道题,对于每棵生成树,有\((n-1)!\)种顺序将边加入生成树中,所以还要乘上去

「Luogu4430」小猴打架

标签:.com   现在   clu   http   inline   ...   class   等价   ref   

原文地址:https://www.cnblogs.com/lizbaka/p/10295542.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!