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

题意简述

定义"五角形圈"为一个长度为 n n n的环,每一条边都画一个正五边形,形成的图形。给定 n n n,求长度为 n n n的环形成的"五角形圈"的生成树有多少种(每个点都是不一样的)?
(如下图是一个 4 4 4条边形成的"五角形圈")

(bzoj上盗的图)

数据

输入

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

输出

T T T行,第 i i i行是第 i i i次询问的答案。

样例

输入
1
2
输出
40

思路

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

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

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

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

代码:

#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;
}

回到总笔记界面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值