题目描述

输入输出格式

输入格式:

输入文件第一行是一个正整数n,表示树有n个结点。第二行有n个数,第i个数表示di,即树的第i个结点的度数。其中1<=n<=150,输入数据保证满足条件的树不超过10^17个。

输出格式:

输出满足条件的树有多少棵。

输入输出样输入样例#1:

4
2 1 2 1
输出样例#1:

2

Prüfer编码与Cayley公式

给出几个链接:

http://www.matrix67.com/blog/archives/682

http://blog.csdn.net/justesss/article/details/38129101

http://blog.csdn.net/yuyanggo/article/details/49951597

总的来说,就是说:

1.n个节点的生成树有n^(n-2)

2.对于n个点,度为di

方案数=(n-2)!/(∏(di-1)!)

对于这题直接套第2个公式

分解质因子再化简

注意判断树能否构成

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int d[],n,vis[],prime[],pre[],tot,sum;
long long s[],ans;
long long qpow(long long x,int y)
{
long long res=;
while (y)
{
if (y&) res=res*x;
x=x*x;
y=y/;
}
return res;
}
int main()
{
int i,j;
cin>>n;
for (i=; i<=n; i++)
{
scanf("%d",&d[i]);
if (d[i]==&&!=n)
{
cout<<;
return ;
}
sum+=d[i]-;
for (j=; j<=d[i]-; j++)
s[j]--;
}
if (sum!=n-)
{
cout<<;
return ;
}
for (i=; i<=n-; i++)
s[i]++;
for (i=; i<=n; i++)
{
if (vis[i]==)
{
pre[i]=i;
tot++;
prime[tot]=i;
}
for (j=; j<=tot; j++)
{
if (prime[j]*i>n) break;
vis[i*prime[j]]=;
pre[i*prime[j]]=prime[j];
if (i%prime[j]==) break;
}
}
ans=;
for (i=n; i>=; i--)
if (pre[i]!=i)
{
s[pre[i]]+=s[i];
s[i/pre[i]]+=s[i];
s[i]=;
}
for (i=n; i>=; i--)
{
if (s[i]<)
{
cout<<;
return ;
}
ans*=qpow(i,s[i]);
}
cout<<ans;
}

[HNOI2004]树的计数的更多相关文章

  1. BZOJ1211: [HNOI2004]树的计数

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1245  Solved: 383[Submit][Statu ...

  2. BZOJ 1211: [HNOI2004]树的计数( 组合数学 )

    知道prufer序列就能写...就是求个可重集的排列...先判掉奇怪的情况, 然后答案是(N-2)!/π(d[i]-1)! -------------------------------------- ...

  3. 【BZOJ 1211】 1211: [HNOI2004]树的计数 (prufer序列、计数)

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2468  Solved: 868 Description 一 ...

  4. bzoj1211: [HNOI2004]树的计数 prufer编码

    题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std ...

  5. bzoj 1211: [HNOI2004]树的计数 -- purfer序列

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MB Description 一个有n个结点的树,设它的结点分别为v1, v2, ...

  6. 【算法】Prüfer编码 —— HNOI2004树的计数

    的确,如果不知道这个编码的话的确是一脸懵逼.在这里放一篇认为讲的很详细的 BLOG,有关于编码的方式 & 扩展在里面都有所提及. 欢迎点此进入 --> 大佬的博客 在这里主要想推导一下最 ...

  7. prufer BZOJ1211: [HNOI2004]树的计数

    以前做过几题..好久过去全忘了. 看来是要记一下... [prufer] n个点的无根树(点都是标号的,distinct)对应一个 长度n-2的数列 所以 n个点的无根树有n^(n-2)种 树 转 p ...

  8. Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数

    最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可 ...

  9. bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)

    1211: [HNOI2004]树的计数 题目:传送门 题解: 今天刚学prufer序列,先打几道简单题 首先我们知道prufer序列和一颗无根树是一一对应的,那么对于任意一个节点,假设这个节点的度数 ...

  10. P2290 [HNOI2004]树的计数

    P2290 [HNOI2004]树的计数prufer序列模板题 #include <iostream> #include <cstdio> #include <queue ...

随机推荐

  1. 2018.3.29 div格式设置

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  2. Beta 第三天

    今天遇到的困难: 组员对github极度的不适应 github的版本控制和协同化编程确实操作起来需要一定的熟练度,我们缺乏这种熟练度 Android Studio版本不一致项目难以打开的问题仍然无法解 ...

  3. 201621123050 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. L ...

  4. python的Collections 模块

    Collections 模块 知识点 Counter 类 defaultdict 类 namedtuple 类 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它 ...

  5. iOS 播放音频的几种方法

    Phone OS 主要提供以下了几种播放音频的方法: System Sound Services AVAudioPlayer 类 Audio Queue Services OpenAL 1. Syst ...

  6. fread函数详解

    函数原型: size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   FILE   *stream   )    b ...

  7. ASCII排序

    ASCII码排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符.   输入 第一行输 ...

  8. OpenGL中怎么把世界坐标系变成屏幕坐标系

    对这个3D坐标手动进行OpenGL的四个变换,得到的结果就是屏幕上的像素坐标.前三个变换(Model, View, Projection)都是4x4矩阵,操作对象是四维向量,所以需要把(100, 10 ...

  9. ELK学习总结(2-5)elk的版本控制

    ----------------------------------------------------------------- 1.悲观锁和乐观锁 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据 ...

  10. word2vec初探(用python简单实现)

    为什么要用这个? 因为看论文和博客的时候很常见,不论是干嘛的,既然这么火,不妨试试. 如何安装 从网上爬数据下来 对数据进行过滤.分词 用word2vec进行近义词查找等操作 完整的工程传到了我的gi ...