洛谷 P2290 [HNOI2004]树的计数
题目描述

输入输出格式
输入格式:
输入文件第一行是一个正整数n,表示树有n个结点。第二行有n个数,第i个数表示di,即树的第i个结点的度数。其中1<=n<=150,输入数据保证满足条件的树不超过10^17个。
输出格式:
输出满足条件的树有多少棵。
输入输出样例
4
2 1 2 1
题解:质因数分解+prufer数列
以前学过prufer数列...全忘了....
n个点的无根树对应的数列的长度为N-2,这说明一个n个点的无根树有n^(n-2)种
树转prufer数列:将编号最小的叶子结点删掉,将与叶子结点相邻的点加入prufer数列
prufer数列转树:对于集合G={1,2,3,..n}每次找出不在当前prufer数列里有的最小的元素x
与prufer数列的首项连边,删除首项与x,直到剩下两个元素连边...
结点i的度为x,那么i出现的次数为x-1
对于i号点度数为d[i]的 无根树 树的种数有 (n - 2) ! / ( (d1 - 1)! (d2 - 1)! ……(dn - 1)!
参考
会爆long long 分解质因数
代码:
#include<iostream>
#include<cstdio>
#define over printf("0\n")
#define end return 0
using namespace std; int n,x,ok,cnt[];
long long ans=; void chai(int x,int y){
for(int i=;i*i<=x;i++){
while(x%i==){
cnt[i]+=y;
x/=i;
}
}
if(x>)cnt[x]+=y;
} int main(){
scanf("%d",&n);
for(int i=;i<=n-;i++)chai(i,);
for(int i=;i<=n;i++){
scanf("%d",&x);ok+=x-;
if(!x&&n!=){
over; end;
}
for(int j=;j<=x-;j++)chai(j,-);
}
if(ok!=n-){
over;end;
}
for(int i=;i<=n;i++)
for(int j=;j<=cnt[i];j++)
ans=ans*i;
printf("%lld\n",ans);
return ;
}
洛谷 P2290 [HNOI2004]树的计数的更多相关文章
- P2290 [HNOI2004]树的计数(bzoj1211)
		
洛谷P2290 [HNOI2004]树的计数 bzoj1211 [HNOI2004]树的计数 Description 一个有\(n\)个结点的树,设它的结点分别为\(v_1,v_2,\cdots, v ...
 - Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数
		
最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可 ...
 - P2290 [HNOI2004]树的计数
		
P2290 [HNOI2004]树的计数prufer序列模板题 #include <iostream> #include <cstdio> #include <queue ...
 - LUOGU P2290 [HNOI2004]树的计数(组合数,prufer序)
		
传送门 解题思路 \(prufer\)序,就是所有的不同的无根树,都可以转化为唯一的序列.做法就是每次从度数为\(1\)的点中选出一个字典序最小的,把这个点删掉,并把这个点相连的节点加入序列,直到只剩 ...
 - [bzoj3244] [洛谷P1232] [Noi2013] 树的计数
		
Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同, ...
 - BZOJ1211: [HNOI2004]树的计数
		
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1245 Solved: 383[Submit][Statu ...
 - BZOJ 1211: [HNOI2004]树的计数( 组合数学 )
		
知道prufer序列就能写...就是求个可重集的排列...先判掉奇怪的情况, 然后答案是(N-2)!/π(d[i]-1)! -------------------------------------- ...
 - 【BZOJ 1211】 1211: [HNOI2004]树的计数 (prufer序列、计数)
		
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2468 Solved: 868 Description 一 ...
 - bzoj1211: [HNOI2004]树的计数 prufer编码
		
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...
 
随机推荐
- SQL语句 自连表查询。inner join用法,partition by ,列转行查询
			
use mydb1 go -- 表T_Employee2 -- Id Name Position Dept -- 1 张三 员工 市场部 -- 2 李四 经理 销售部 -- 3 王五 经理 市场部 - ...
 - UI组件之UIImage
			
UIImageView:图像视图,用于在应用程序中显示图片 UIImage:是将图片文件转换为程序中的图片对象 UIImageView是UIImage的载体 方法一:用此方法创建图片对象,会将图片ca ...
 - 移植opencv2.4.9到android过程记录
			
http://blog.csdn.net/brightming/article/details/50606463 在移植到arm开发板的时候已经说过,OpenCV已经为各平台准备了一套cmake交叉编 ...
 - ACM训练小结-2018年6月16日
			
今天题目情况如下:A题:线段树+XOR性质.情况:由于写法问题,调试困难,浪费大量时间.B题:(对所有满足i mod p==q,求a[i]之和),无修改,直接上n*sqrt(n)的分块写法.情况:由于 ...
 - linux下安装jsp开发运行环境(centos7)
			
1 开发环境包括 1)apache-tomcat 2)java-jdk 3)mysql 2 apache-tomcat安装(应该先装java再装tomcat) 1)到官网下载最新版本(不建议用yum安 ...
 - redis 数据导入导出,实例内db迁移
			
源实例db0迁移至目标实例db1 [root@172.20.0.1 ~]# cat redis_mv.sh #!/bin/bash redis-cli -h -a password -n keys & ...
 - win10 x64下的DNW驱动不完全安装方法【转】
			
本文转载自:https://blog.csdn.net/sihaiwenshu/article/details/52503550 一.起因 最新心血来潮想学ARM,JZ2440开发板买回来后就开始折腾 ...
 - Gitblit搭建及Git协作开发流程
			
1. 概述 目前主流的是git作为自己代码管理,但是采用github需要付费才能够使用,如果不付费,代码需要公开.创业团队及小型开发团队都有必要搭建自己的代码服务器,自己摸索需要一定的时间,会赶不及项 ...
 - 初识Spring security-添加security
			
请先查看 初识Spring security-无Security的SpringMVC 在pom.xml文件中添加包 <!-- Spring Security --> <depende ...
 - 发现程序bug思路
			
大家有没有遇到过项目,程序出现个bug,但花了好久(真的是a long long time啊)才发现引发这个问题的原因,心想原来就这个原因导致的啊,要是早想到就好了! 其实我们确实的是方法,希望我的抛 ...