题意简述

定义"五角形圈"为一个长度为nn的环,每一条边都画一个正五边形,形成的图形。给定nn,求长度为nn的环形成的"五角形圈"的生成树有多少种(每个点都是不一样的)?
(如下图是一个44条边形成的"五角形圈")
bzoj 2467 [中山市选2010]生成树 题解
(bzoj上盗的图)

数据

输入

第一行是一个TT,表示有TT组数据
接下来TT行,每行一个n(2<=n<=100)n(2<=n<=100)

输出

TT行,第ii行是第ii次询问的答案。

样例

输入
1
2
输出
40

思路

看到这个题的第一反应:wdnmd中山还有市选???

emmm。。。说正事。这个题一看就是一个大组合题。。。应该是有一个公式的,是什么呢?来♂一起推♂公♂式♂。
由于我是个蒟蒻,我一开始想了一个不太正确的思路:我枚举中间那个环上用了多少个边。数着数着,我发现。。。越到后面越不好数,而且还要累加,万一TT一大。。。珂能就挂了。。。

所以我开始换了一种枚举方法:枚举四周的五边形的情况。现在,我来还原一下我当时的思路轨迹。先把4-五角形圈的那个图画在 桌子(我们学校桌子珂以用铅笔在上面写草稿,虽然破坏公物不好,但为了信息竞赛,不管了) 草稿纸上。
bzoj 2467 [中山市选2010]生成树 题解
然后我们删掉一些边。由于每个五边形都组成一个环,所以考虑枚举五边形,去删边。从正上方那个开始,顺时针枚举五边形开始删边(如红色箭头所示)。蓝色表示删去的边。
bzoj 2467 [中山市选2010]生成树 题解
删到第三个,如果我们不考虑最左边那个,删去的边已经形成一个树了。此时我们完成了删n1n-1个的任务,由于n1n-1个五边形每个都有55条边(废话),所以每个都有55种选择(55条边中任选一个删除,即可让前n1n-1个形成树)。到此就是5n15^{n-1}种。
但是,对于最后一个,不是删11个就珂以形成树的。似乎。。。要删两个。而且我们会发现,紫色所示的那条边还必须删除,因为剩下n1n-1个五边形让中间的那个环的剩下n1n-1个点联通,如果此时在多连一条边,就变成环了,不满足条件,所以紫色的一定要删。剩下还有44种选择(蓝色表示的是其中一种)。如下图所示
bzoj 2467 [中山市选2010]生成树 题解
然后我们会发现,还没考虑完。题目中说每个点都是不一样的,所以最后剩下的那个五边形是哪个都有珂能,并且都会生成不一样的树。所以还要乘nn

这样一总和,答案就是4n×5n14n\times 5^{n-1}。打个快速幂就过了。

代码:

#include<bits/stdc++.h>
using namespace std;
namespace Flandle_Scarlet{
	#define mod 2007
	
	int qpow(int a,int b,int m)//a^b%m
	//快速幂
	{
		int r=1;
		while(b)
		{
			if (b&1) r=r*a%m;
			a=a*a%m,b>>=1;
		}
		return r;
	}
	
	void Main()
	{
		int T;scanf("%d\n",&T);
		while(T--)
		{
			int n;
			scanf("%d",&n);
			printf("%d\n",4*n*qpow(5,n-1,mod)%mod);
			//解释过了
		}
	}
}
int main()
{
	Flandle_Scarlet::Main();
	return 0;
}

回到总笔记界面

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2022-01-11
  • 2021-12-18
  • 2021-06-18
  • 2021-12-24
  • 2021-08-26
猜你喜欢
  • 2022-02-16
  • 2022-01-21
  • 2021-11-26
  • 2021-11-17
相关资源
相似解决方案