【解题思路】

  引理:Prufer编码

定义:不断删除树中度数为1的最小序号的点,并输出与其相连的节点的序号,直至树中只有两个节点,所得输出序列即为Prufer编码。

性质:任意一棵n节点的树都可以用长为(n-2)的Prufer编码唯一表示;m度的节点在序列中出现次数为m-1。

  所以,我们只要计算合法的Prufer序列即可。

  设没有度数限制的节点共x个,有度数限制的节点集y,cnt=∑(d-1)(d∈y)。记range(n)=[1,n)∩N。

  对于没有度数限制的节点,共A=xn-2-cnt种相对方案;

  对于有度数限制的节点,共B=∏C(cnt-∑(dj-1)(j∈range(i)),di-1)(i∈range(n+1))种相对方案;

  根据乘法原理,ans=A*B*C(n-2,cnt)。时间复杂度O(n)。

【参考代码】

 import math

 def Ginput(prompt=""):
try:
return raw_input(prompt)
except:
return input(prompt) if __name__=="__main__":
n=int(Ginput())
cnt=S=0
pai=1
for i in range(n):
d=int(Ginput())
if d>-1:
cnt+=1
S+=d-1
pai*=math.factorial(d-1)
tmp=n-2-S
ans=math.factorial(n-2)/math.factorial(tmp)/pai*(n-cnt)**tmp
print(ans)

bzoj1005题解的更多相关文章

  1. bzoj1211树的计数 x bzoj1005明明的烦恼 题解(Prufer序列)

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3432  Solved: 1295[Submit][Stat ...

  2. 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)

    [BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...

  3. 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度

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

  4. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  5. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  6. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  7. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  8. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  9. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

随机推荐

  1. 【JavaWeb项目】一个众筹网站的开发(四)后台用户注册功能

    重点: 密码加密存储 使用jQuery插件做校验和错误提示等 密码不能明文存储,在数据库中是加密存储的 可逆加密:通过密文使用解密算法得到明文 DES AES 不可逆加密:通过密文,得不到明文 MD5 ...

  2. Jmeter-【JSON Extractor】-响应结果中数组多个相同key取值

    一.请求返回样式 二.取所有option的值 三.查看结果

  3. 深入浅出 Vue.js 第九章 解析器---学习笔记

    本文结合 Vue 源码进行学习 学习时,根据 github 上 Vue 项目的 package.json 文件,可知版本为 2.6.10 解析器 一.解析器的作用 解析器的作用就是将模版解析成 AST ...

  4. 几何向量gcd+暴力枚举——cf552

    两两枚举点(xi,yi)(xj,yj)对于第三个点(xk,yk),只要向量ik和ij方向不同即可 只要(xj-xi,yj-yi) 和 (xk-xi,yk-yi)化简后不相同即可,用每个点开个map存下 ...

  5. CF232E Quick Tortoise , Fzoj 3118

    这一题由于数据较多,我们考虑离线处理. 分治.对于两个点s,t,如果起点在mid这条横线上方,终点在下方,那么它必定会穿过mid这条线.所以只要s可以到mid上一点x,x可以到t,st就是安全的. 用 ...

  6. 在jeecg中如何配置多对一和多对多的关系

    多对多: mappedBy指的是当前的类对应的表, cascade属性的可能值有 all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作. ...

  7. 拾遗:~/.zshrc 配置

    Tips: zsh 默认仅显示最近 16 条历史记录 $ # 等价于 history - :显示最近 条记录 $ history $ # 等价于 history - : 显示从第 条到最后 条,即是全 ...

  8. 剑指offer——03二维数组中的查找

    题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1].不 ...

  9. 2019年Pandas官方用户调研

    import pandas as pd import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline plt.rcP ...

  10. DNF游戏币拼团

    DNF游戏币拼团活动方案 活动目的: 通过拼团的方式来实现老拉新和现实新用户转换,可以通过有需求的用户来告知好友来进行用户裂变 活动时间:预计时间2018.11.11-2018.11.23 SLOGA ...