首先考虑无解的情况, 根据purfer序列,当dee[i]=0并且n!=1的时候,必然无解。否则为1.

且sum(dee[i]-1)!=n-2也必然无解。

剩下的使用排列组合即可推出公式。需要注意的是题目虽然说最终答案不会超过1e17,但是中间过程可能超。

由于n<=150, 所以sum最多是148. 于是我们可以打出150*150的组合表。实现O(1)计算组合数。

# include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iostream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <set>
# include <cmath>
# include <algorithm>
using namespace std;
# define lowbit(x) ((x)&(-x))
# define pi 3.1415926535
# define eps 1e-9
# define MOD 100000007
# define INF 1000000000
# define mem(a,b) memset(a,b,sizeof(a))
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
# define FO(i,a,n) for(int i=a; i<n; ++i)
# define bug puts("H");
# define lch p<<1,l,mid
# define rch p<<1|1,mid+1,r
# define mp make_pair
# define pb push_back
typedef pair<int,int> PII;
typedef vector<int> VI;
# pragma comment(linker, "/STACK:1024000000,1024000000")
typedef long long LL;
int Scan() {int res=0, flag=0;char ch;if((ch=getchar())=='-') flag=1;else if(ch>='0'&&ch<='9') res=ch-'0';while((ch=getchar())>='0'&&ch<='9')  res=res*10+(ch-'0');return flag?-res:res;
}
void Out(int a) {if(a<0) {putchar('-'); a=-a;}if(a>=10) Out(a/10);putchar(a%10+'0');
}
const int N=10005;
//Code begin...int dee[155];
LL cc[155][155];void init()
{FOR(i,0,150) {cc[i][0]=1;FOR(j,1,i) cc[i][j]=cc[i-1][j-1]+cc[i-1][j];}
}
int main ()
{init();int n, sum=0;LL ans=1;scanf("%d",&n);if (n==1) {scanf("%d",dee);puts(dee[0]==0?"1":"0");return 0;}FOR(i,1,n) {scanf("%d",dee+i), --dee[i], sum+=dee[i];if (dee[i]<0) {puts("0"); return 0;}}if (sum!=n-2) {puts("0"); return 0;}FOR(i,1,n) {if (!dee[i]) continue;ans*=cc[sum][dee[i]];sum-=dee[i];}printf("%lld\n",ans);return 0;
}

View Code

转载于:https://www.cnblogs.com/lishiyao/p/6543647.html

BZOJ 1211 树的计数(purfer序列)相关推荐

  1. BZOJ 1211: [HNOI2004]树的计数 purfer序列

    1211: [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给 ...

  2. bzoj1211 [HNOI2004]树的计数 prufer序列+组合数

    如果独自去想出prufer序列实在太难了 所以就只能直接用结论,把树转成prufer序列后这棵树和prufer序列是一一对应的关系 树->prufer序列:每次找到所有叶子结点中编号最小的,删掉 ...

  3. 树的计数 Prüfer编码与Cayley公式 学习笔记

    最近学习了Prüfer编码与Cayley公式,这两个强力的工具一般用于解决树的计数问题.现在博主只能学到浅层的内容,只会用不会证明. 推荐博客:https://blog.csdn.net/moreja ...

  4. bzoj 1211 [HNOI2004]树的计数

    [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, ...

  5. 最小生成树、矩阵树定理、Prufer序列总结

    Kruskal算法 按边权排序,从小到大合并不在同一集合两点即可 Prim算法 每次加入一个到当前已选点集最近的点 P2619 [国家集训队]Tree I 考虑二分,每次给白边加上一个mid,通过这种 ...

  6. 【BZOJ1211】【HNOI2004】树的计数(prufer序,组合数)

    Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, -, dn,编程需要 ...

  7. 算法与数据结构07:前缀树,计数排序与桶排序

    算法与数据结构07:前缀树,计数排序与桶排序 前缀树 计数排序 桶排序 前缀树 Trie 1.根据字符串数组中,每个字符串的字符作为路径,组成而成的一个多叉树结构 2.每个节点都有一个paths数组, ...

  8. K12563 输出树的广度优先遍历序列

    K12563 输出树的广度优先遍历序列 今天我们再来说一题,看一下题目和样例吧. 好,这一题是图的BFS,BFS我就不说了,想知道的点这里 这一题就是一个模板,看一下这题的代码: #include&l ...

  9. 树的计数(prufer序列 或 purfer序列)

    题解 首先我们要知道一条性质,prufer序列中的某个点出现次数为该点在树中度数-1 感性理解一下,其实按照prufer序列求法自己推一下就出来了 设题目里给的度为$d[]$ 先将所有的d-- 然后按 ...

最新文章

  1. 郑冠杰:KDD Cup城市大脑赛题方法总结!
  2. python自动生成测试报告步骤_生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化...
  3. Centos7.2搭建Openstack无法成功启动Trove
  4. Flutter Beta 3 新特性概览
  5. MyBatisPlus中使用 @TableField完成字段自动填充
  6. Django讲课笔记06:搭建项目开发环境
  7. 骁龙855加持!一加5G原型机将亮相MWC2019:价格却不太友好
  8. PNG免抠古风纹理背景太漂亮了,直接应用的才是好素材
  9. python第六篇文件处理类型
  10. springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:
  11. java飞机大战子弹怎么修改_java改版飞机大战源码
  12. ajax验证本服务器,jquery – 使用Ajax调用的http基本身份验证
  13. 【学习】自定义view
  14. mysql的四大常用语句_SQL四大基本语句
  15. Spring Cloud Gateway服务网关
  16. 微信公众平台开发--入门了解
  17. Promise面试题汇总
  18. 【微信小程序】设备判断android还是ios及微信版本信息 ( 含工具类 )
  19. mysql服务启动正常,登录报错异常处理
  20. 2021年全球与中国重型泥浆泵行业市场规模及发展前景分析

热门文章

  1. eclipse左侧框不见了怎么办
  2. 代码段间转移控制时的特权级检查(JMP/CALL)——《x86汇编语言:从实模式到保护模式》读书笔记28
  3. 【⛸️拒绝手滑,我们都是稳准狠⛸️】C++のmemset函数的小探究
  4. linux不能ping通域名能ping通ip
  5. Ubuntu下用webstorm开发Nodejs(二)
  6. JZOJ 3158. 【JSOI2013】丢番图
  7. 计算机网络与云计算研究背景,基于云计算背景下的计算机网络安全研究
  8. linux内存分配缺陷,Linux系统优化-内存错误分析
  9. jenkins gitlab php,jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)...
  10. qlabel文本改变信号_周明:NLP进步将如何改变搜索体验