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

BZOJ 2467: [中山市选2010]生成树 题解

时间:2017-10-05 00:23:46      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:line   数据包   ==   正整数   测试数据   log   ret   string   zoj   

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接 :http://www.lydsy.com/JudgeOnline/problem.php?id=2467

Description

有一种图形叫做五角形圈。一个五角形圈的中心有1个由n个顶点和n条边组成的圈。在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形。这些五角形只在五角形圈的中心的圈上有公共的顶点。如图0所示是一个4-五角形圈。
 
现在给定一个n五角形圈,你的任务就是求出n五角形圈的不同生成树的数目。还记得什么是图的生成树吗?一个图的生成树是保留原图的所有顶点以及顶点的数目减去一这么多条边,从而生成的一棵树。
注意:在给定的n五角形圈中所有顶点均视为不同的顶点。

Input

输入包含多组测试数据。第一行包含一个正整数T,表示测试数据数目。每组测试数据包含一个整数n( 2<=N<=100),代表你需要求解的五角形圈中心的边数。

Output

对每一组测试数据,输出一行包含一个整数x,表示n五角形圈的生成树数目模2007之后的结果。

Sample Input

1
2

Sample Output

40

 

分析:

组合问题,乘法原理。

对于n五角形圈来说,要形成一棵树,需要满足两个条件:1.无环且连通  2.从5*n条边 -->4*n-1条边

也就是说,我们要先从每个五角形圈中去掉一条边,然后在一个五角形圈中再去一条边。

也就是从n-1个五角形圈中去掉一条边,然后在一个五角形圈中去掉两条边(其中一条必定在中心n边形上,否则无法保证连通)。

 步骤一方案数:5^(n-1)   步骤二方案数:4

又由于去掉两条边的五边形可以是所有五边形中的任意一个,方案数*n

总方案数:4*n*5^(n-1)

 

AC代码:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstring>
 5 
 6 const long long MOD = 2007;
 7 
 8 inline void read(long long &x)
 9 {
10     char ch = getchar(),c = ch;x = 0;
11     while(ch < 0 || ch > 9) c = ch,ch = getchar();
12     while(ch <= 9 && ch >= 0) x = (x<<1)+(x<<3)+ch-0,ch = getchar();
13     if(c == -) x = -x;
14 }
15 
16 long long n,T;
17 
18 long long ksm(long long a,long long b)
19 {
20     long long base = a,ans = 1;
21     for(;b;b>>=1)
22     {
23         if(b&1)
24             ans = ans*base%MOD;
25         base = base*base%MOD;
26     }
27     return ans;
28 }
29 
30 inline void calc(long long n)
31 {
32     long long ans = 4*n%MOD;
33     ans = ans*ksm(5,n-1)%MOD;
34     printf("%lld\n",ans);
35 }
36 //公式:4*n*5^(n-1)
37 int main()
38 {
39     read(T);
40     for(int i = 1;i <= T;++ i)
41     {
42         read(n);
43         calc(n);
44     }
45     return 0;
46 }

 

BZOJ 2467: [中山市选2010]生成树 题解

标签:line   数据包   ==   正整数   测试数据   log   ret   string   zoj   

原文地址:http://www.cnblogs.com/shingen/p/7628062.html

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