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

bzoj1430: 小猴打架(prufer序列)

时间:2018-01-21 10:55:42      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:type   zoj   clu   传送门   mes   include   ble   logs   mil   

1430: 小猴打架

题目:传送门


 

 

简要题意:

   n只互不相识的猴子打架,打架之后就两两之间连边(表示已经相互认识),只有不认识(朋友的朋友都是朋友)的两只猴子才会打架。最后所有的猴子都会连成一棵树,也就是经过n-1次打架,求不同的打架方案数。


 

 

题解:

   我们需要一个强大的方法:prufer序列。。。

   这个东西很牛逼!!!

   简单来说就是把一颗n个节点的无根树,转换为n-2的一个序列

   序列和树之间两两可互相转化,且是一一对应的。

   具体%%%神犇:prufer序列 


 

 

思考niang小时,代码niang分钟:

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 typedef long long LL;
 5 const LL mod=9999991LL;
 6 int n;
 7 int main()
 8 {
 9     LL ans=1;
10     scanf("%d",&n);
11     for(int i=1;i<=n-2;i++)ans=ans*n%mod;
12     for(LL i=1;i<n;i++)ans=ans*i%mod;
13     printf("%lld\n",ans);
14     return 0;
15 }

 

bzoj1430: 小猴打架(prufer序列)

标签:type   zoj   clu   传送门   mes   include   ble   logs   mil   

原文地址:https://www.cnblogs.com/CHerish_OI/p/8323505.html

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