Description

自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树?

Input

第一行为N(0 < N < = 1000),接下来N行,第i+1行给出第i个节点的度数Di,如果对度数不要求,则输入-1

Output

一个整数,表示不同的满足要求的树的个数,无解输出0

Sample Input

3
1
-1
-1

Sample Output

2

HINT

两棵树分别为1-2-3;1-3-2

 
数学相关
我觉得我是做不出来了,只能学一下关于暴力分解的各种咯
 #include<cstdio>
#define mod 100000
#include<cmath>
using namespace std;
int num[],ans[],pri[],d[];
int cnt,n,l,m,tot;
bool jud(int x){
for(int i=;i<=sqrt(x);i++)
if(x%i==)return ;
return ;
} void getpri(){
for(int i=;i<=;i++)
if(jud(i))pri[++cnt]=i;
} void solve(int a,int f){
for(int i=;i<=a;i++){
int x=i;
for(int j=;j<=cnt;j++){
if(x==) break;
while(x%pri[j]==){
num[j]+=f;x/=pri[j];
}
}
}
} void mult(int x){
for(int i=;i<=l;i++) ans[i]*=x;
for(int i=;i<=l;i++) ans[i+]+=ans[i]/mod,ans[i]%=mod;
while(ans[l+]>){
l++;ans[l+]=ans[l]/mod;ans[l]%=mod;
}
}
void print()
{
for(int i=l;i>;i--)
if(i==l)printf("%d",ans[i]);
else printf("%05d",ans[i]);
}
int main(){
getpri();
int x;ans[]=;l=;
scanf("%d",&n);
if(n==){
scanf("%d",&x);
if(!x) {printf("");return ;}
else {printf("");return ;}
}
for(int i=;i<=n;i++){
scanf("%d",&d[i]);
if(d[i]==) {printf("");return ;}
if(d[i]==-) m++;
else {d[i]--;tot+=d[i];}
}
if(tot>n-){printf("");return ;}
solve(n-,);solve(n--tot,-);
for(int i=;i<=n;i++) if(d[i]) solve(d[i],-);
for(int i=;i<=n--tot;i++) mult(m);
for(int i=;i<=cnt;i++) while(num[i]--) mult(pri[i]);
print();
}

【BZOJ 1005】[HNOI2008]明明的烦恼的更多相关文章

  1. BZOJ 1005 [HNOI2008] 明明的烦恼(组合数学 Purfer Sequence)

    题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N( ...

  2. BZOJ 1005: [HNOI2008]明明的烦恼 Purfer序列 大数

    1005: [HNOI2008]明明的烦恼 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  3. bzoj 1005: [HNOI2008]明明的烦恼 prufer编号&&生成树计数

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2248  Solved: 898[Submit][Statu ...

  4. BZOJ 1005: [HNOI2008]明明的烦恼( 组合数学 + 高精度 )

    首先要知道一种prufer数列的东西...一个prufer数列和一颗树对应..然后树上一个点的度数-1是这个点在prufer数列中出现次数..这样就转成一个排列组合的问题了.算个可重集的排列数和组合数 ...

  5. BZOJ 1005 [HNOI2008]明明的烦恼 (Prufer编码 + 组合数学 + 高精度)

    1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5786  Solved: 2263[Submit][Stat ...

  6. BZOJ 1005 [HNOI2008]明明的烦恼 purfer序列,排列组合

    1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少 ...

  7. bzoj 1005 [HNOI2008] 明明的烦恼 (prufer编码)

    [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5907  Solved: 2305[Submit][Status][Di ...

  8. BZOJ 1005: [HNOI2008]明明的烦恼(prufer数列)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1005 题意: Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标 ...

  9. BZOJ.1005.[HNOI2008]明明的烦恼(Prufer 高精 排列组合)

    题目链接 若点数确定那么ans = (n-2)!/[(d1-1)!(d2-1)!...(dn-1)!] 现在把那些不确定的点一起考虑(假设有m个),它们在Prufer序列中总出现数就是left=n-2 ...

  10. BZOJ 1005 [HNOI2008]明明的烦恼 ★(Prufer数列)

    题意 N个点,有些点有度数限制,问这些点可以构成几棵不同的树. 思路 [Prufer数列] Prufer数列是无根树的一种数列.在组合数学中,Prufer数列是由一个对于顶点标过号的树转化来的数列,点 ...

随机推荐

  1. 网络流sap算法模版

    递归版sap: #include<cstdio> #include<iostream> #include<cstring> #include<algorith ...

  2. CF 107E 多边形面积并

    107E Darts 题目:给出n个矩形,问落在n个矩形交的部分的概率 分析:裸的多边形面积并. 代码略..

  3. hdu 3917 Road constructions 最大权闭合子图

    样例说明: n(城市数目)   m(工程队数目) 每个工程队上交的税收 val[i] k(k个工程) xi   yi  ci  costi , 工程队ci承包由xi到yi,政府的补贴为costi 注意 ...

  4. UIScrollView的相关属性说明

    _scrollView = [[UIScrollView alloc] init]; //height = 0:禁止垂直方向滚动 _scrollView.contentSize = CGSizeMak ...

  5. String 和 StringBuffer的区别

    String与StringBuffer的区别:            简单地说,就是一个常量和变量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋 ...

  6. a标签中使用img后的高度多了4px

    前两天,在做一个网站的时候,发现a标签中使用img后的高度多了4px,各种纠结. 最后,仔细分析,终于找到原因了,因为img是行内元素,默认display: inline; 它与文本的默认行为类似,下 ...

  7. 基于ASP.Net +easyUI框架上传图片,判断格式+实现即时浏览

    <div> 选择图片:<input id="idFile" style="width:224px" runat="server&qu ...

  8. POJ1064

    #include <iostream> #include <iomanip> #include <cmath> using namespace std; int N ...

  9. 关于sql中constraint 前缀的用意(PK、UK、DF、CK、FK)

    --主键constraint PK_字段 primary key(字段), --唯一约束constraint UK_字段 unique key(字段), --默认约束constrint DF_字段 d ...

  10. FMS服务器在centos下安装

    首先当然得先下载安装包了 http://pan.baidu.com/s/1jGL1Nvw #要先安装一下这个包,否则会提收提示错误,缺少libcap yum install compat-libcap ...