bzoj1005题解
【解题思路】
引理: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题解的更多相关文章
- bzoj1211树的计数 x bzoj1005明明的烦恼 题解(Prufer序列)
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3432 Solved: 1295[Submit][Stat ...
- 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)
[BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...
- 【BZOJ1005/1211】[HNOI2008]明明的烦恼/[HNOI2004]树的计数 Prufer序列+高精度
[BZOJ1005][HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
随机推荐
- NX二次开发-Block UI C++界面Body Collector(体收集器)控件的获取(持续补充)
Body Collector(体收集器)控件的获取 NX9+VS2012 #include <uf.h> #include <uf_obj.h> UF_initialize() ...
- B606 ChangeNet
@echo off Setlocal Enabledelayedexpansion title B606 ChangeNet echo Checking... set inside=F&set ...
- windows10安装sqlmap与简单配置
一.获取sqlmap压缩包: 注意:安装sqlmap之前,先确认已有python2.x环境 获取sqlmap压缩包并解压 下载地址:http://sqlmap.org/ 二.将解压缩的文件放在pyth ...
- 16、使用jQuery的html5player播放器,进行播放
<!-- Website Design By: www.happyworm.com --> <title>Demo : jPlayer as a video playlist ...
- 记一次Tomcat运行失败记录
记一次Tomcat运行失败记录 如图tomcat运行之后会出现这样的情况,在网上百度之后大部分都说的是web.xml或者其他配置文件的问题,但是根据网上修改了之后却还是老样子. 这里有比较好的网址可以 ...
- LeetCode 最小栈
题目链接:https://leetcode-cn.com/problems/min-stack/ 题目大意 略.并且题目中要求的操作都要 O(1) 实现. 分析 用 2 个栈,一个普通栈,一个单调栈. ...
- 2.执行计划(explain)分析
1.使用场景 获取执行计划命令:在select 命令前加上explain 或 desc explain select 或 desc select 1.语句执行之前 :防患于未然 2.出现慢语句时 :亡 ...
- springboot上传图片大小限制
背景:springboot项目上传图片超过1M报错,经了解,springboot默认上传文件1M 需求:更改默认配置,控制上传文件大小 方法:①更改配置文件(经试验不可行,不知道为什么):②更改启动B ...
- 6-vim-移动命令-01-方向和行内移动
移动 命令模式下快速移动光标 编辑操作命令与移动命令结合使用 1.上下左右 命令 功能 手指 h 向左 食指 j 向下 食指 k 向上 中指 l 向右 无名指 2.行内移动 命令 英文 功能 w wo ...
- vue中的import {} from '@/api/api'
例:import {queryDepartTreeList, searchByKeywords} from '@/api/api' 首先查看vue.config.js文件,在这个文件里面定义了定义了@ ...