BZOJ1211: [HNOI2004]树的计数
1211: [HNOI2004]树的计数
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 1245 Solved: 383
[Submit][Status]
Description
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵。给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数。
Input
第一行是一个正整数n,表示树有n个结点。第二行有n个数,第i个数表示di,即树的第i个结点的度数。其中1<=n<=150,输入数据保证满足条件的树不超过10^17个。
Output
输出满足条件的树有多少棵。
Sample Input
2 1 2 1
Sample Output
HINT
Source
题解:
prufer序列裸题吧。。。
一直交上去0ms WA,实在受不鸟了交了lyd的代码。。。
代码:
mine
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<string>
#define inf 1000000000
#define maxn 50000
#define maxm 500+100
#define eps 1e-10
#define ll long long
#define pa pair<int,int>
#define for0(i,n) for(int i=0;i<=(n);i++)
#define for1(i,n) for(int i=1;i<=(n);i++)
#define for2(i,x,y) for(int i=(x);i<=(y);i++)
#define for3(i,x,y) for(int i=(x);i>=(y);i--)
#define mod 1000000007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
return x*f;
}
int a[maxn],n,tot;
bool v[maxn];
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
n=read();
int sum=;
for1(i,n)
{
int x=read()-;sum+=x;
if(x<||x>=n){printf("");return ;};
for1(j,x)a[++tot]=j;
}
if(n==&&sum==-){printf("");return ;}
if(n==&&sum==){printf("");return ;}
if(sum!=n-){printf("");return ;}
sort(a+,a+tot+);
ll ans=;
for1(i,n-)
{
ans*=i;
for1(j,tot)
if(!v[j]&&ans%a[j]==)ans/=a[j],v[j]=;
}
printf("%lld\n",ans);
return ;
}
lyd
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,c[],i,j,sum;
long long ans; int main()
{
freopen("input.txt","r",stdin); freopen("output2.txt","w",stdout);
cin>>n;
if(n==) {cin>>m; if(m) cout<<<<endl; else cout<<<<endl; return ;}
for(i=;i<=n;i++)
{
scanf("%d",&m);
if(m<||m>n) {cout<<<<endl; return ;}
sum+=m-;
for(j=;j<m;j++) c[j]++;
}
m=n-;
if(sum!=m) {cout<<<<endl; return ;}
ans=;
for(i=;i<=m;i++)
{
ans*=i;
for(j=;j<n;j++)
while(c[j]&&ans%j==) c[j]--,ans/=j;
}
cout<<ans<<endl;
return ;
}
BZOJ1211: [HNOI2004]树的计数的更多相关文章
- bzoj1211: [HNOI2004]树的计数 prufer编码
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...
- prufer BZOJ1211: [HNOI2004]树的计数
以前做过几题..好久过去全忘了. 看来是要记一下... [prufer] n个点的无根树(点都是标号的,distinct)对应一个 长度n-2的数列 所以 n个点的无根树有n^(n-2)种 树 转 p ...
- bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)
1211: [HNOI2004]树的计数 题目:传送门 题解: 今天刚学prufer序列,先打几道简单题 首先我们知道prufer序列和一颗无根树是一一对应的,那么对于任意一个节点,假设这个节点的度数 ...
- 【prufer编码】BZOJ1211 [HNOI2004]树的计数
Description 给定一棵树每个节点度的限制为di,求有多少符合限制不同的树. Solution 发现prufer码和度数必然的联系 prufer码一个点出现次数为它的度数-1 我们依然可以把树 ...
- BZOJ1211:[HNOI2004]树的计数(组合数学,Prufer)
Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要 ...
- bzoj1211: [HNOI2004]树的计数 prufer序列裸题
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di ...
- bzoj1211: [HNOI2004]树的计数(purfer编码)
BZOJ1005的弱化版,不想写高精度就可以写这题嘿嘿嘿 purfer编码如何生成?每次将字典序最小的叶子节点删去并将其相连的点加入序列中,直到树上剩下两个节点,所以一棵有n个节点的树purfer编码 ...
- BZOJ1211: [HNOI2004]树的计数(prufer序列)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2987 Solved: 1111[Submit][Status][Discuss] Descript ...
- [BZOJ1211][HNOI2004]树的计数(Prufer序列)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1211 分析: 关于无根树的组合数学问题肯定想到Prufer序列,类似bzoj1005那 ...
随机推荐
- ORCL_INSTALL_WIN10
0.相关问题 INS-13001环境不满足最低要求: Win10下安装Oracle11g 不满足配置解决方法如下: 原因:Oracle 在发布 11g时,Winodws 10还没有发布.所以Oracl ...
- eCharts的随笔
1.散点图中找最优记录 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ...
- HRBUST 1987 逃课的孩子
Sol:HASH + 二分 字符串处理,很基础的操作. 题意很明确就是找重复的次数统计下,范围比较大1≤n≤10000,1≤m≤10000. #include <cstdio> #inc ...
- MC, MCMC, Gibbs採样 原理&实现(in R)
本文用讲一下指定分布的随机抽样方法:MC(Monte Carlo), MC(Markov Chain), MCMC(Markov Chain Monte Carlo)的基本原理,并用R语言实现了几个样 ...
- [置顶] Win8.1慎用360优化,可能导致安装驱动出现数据无效的问题。附解决方法
2013年9月30日,更新说明: 不知道是不是我禁用了其他驱动造成 今天开机后连接手机,我的电脑里没出现MTP设备 于是打开设备管理器,发现MTP,也就是我的XPERIA U出现了感叹号图标 右键更新 ...
- Oracle 11g新特性invisible index(不可见的索引)
假设一张表上有十几个索引,你有什么感受?显然会拖慢增.删.改的速度.不要指望开发者能建好索引.我的处理方法是先监控非常长的一段时间.看哪些索引没实用到,然后删除. 但删除以后,假设发现某一天实用,那又 ...
- Spring MVC 注解[转]
[学习笔记]基于注解的spring3.0.x MVC学习笔记(九) 摘要: 本章节,仅为@SessionAttributes的功能扩展介绍介绍,结合@requestparam注解进行简易无数据库分页. ...
- JavaScript中的面向对象的讨论(转)
前言 今天,WEB2.0时代的到来,给了JavaScript又一次大展身手的机会.Web2.0借助JavaScript技术,使得客户端的Web体验更加丰富多彩,同时JavaScript面对的问题域也变 ...
- [ES6] for..in && for..of
var ary = [ { id: 1, name: "Zhentian" }, { id: 2, name: "Alice" } ]; for..in Pri ...
- 为什么HikariCP被号称为性能最好的Java数据库连接池,怎样配置使用
HiKariCP是数据库连接池的一个后起之秀.号称性能最好.能够完美地PK掉其它连接池. 原文地址:http://blog.csdn.net/clementad/article/details/469 ...