bzoj 1430: 小猴打架 prefer编码

来源:互联网 发布:推荐淘宝皮鞋店铺 编辑:程序博客网 时间:2024/04/29 10:55

题意

一开始森林里面有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<=1000000

分析

答案就是nn2(n1)!
用prufer编码来证。

代码

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#define MOD 9999991#define ll long longusing namespace std;int main(){    int n;    scanf("%d",&n);    int ans=1;    for (int i=1;i<=n-2;i++)        ans=(ll)ans*n%MOD*i%MOD;    ans=(ll)ans*(n-1)%MOD;    printf("%d",ans);    return 0;}
0 0
原创粉丝点击