bzoj1004 purfer 序列

之前没不知道这个数列。

一个purfer序列与一棵树一一对应。

长度为n的purfer的集合: A = { s | s is a sequence and a∈[1,len(s)+2]

一个直接的结论就是:n个带标记的节点的树有nn-2种。

这道题有了上面的对应,可以计算满足要求的purfer序列的个数,用组合计数可以解决。

感谢JMJST的细心讲解:

http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html

时间: 2024-10-05 04:26:06

bzoj1004 purfer 序列的相关文章

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

1211: [HNOI2004]树的计数 Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数. Input 第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的树不超过10^17个. Output 输出满足条件的树有多少棵

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

1005: [HNOI2008]明明的烦恼 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1005 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N(0 < N < = 1000),接下来N行,第i+1行

数学结论、计算几何

排列组合 圆排列 有限多重集的排列 n!/(n1!*n2!*...*nk!) n元无限集可重-r组合C(n+r-1,r)种. n元无限集取r个,n中每个至少出现一次C(r-1,n-1)(r≥n) 直线分平面: f(1) = 2 f(n) = f(n-1)+n = n(n+1)/2+1 折线分平面: f(1) = 2 f(n) = f(n-1)+4(n-1)+1 = 2n^2-n+1 圆分平面: f(1) = 2 f(n) = f(n-1)+2(n-1) = n^2-n+2 三角形分平面: f(1

CF Gym102028G Shortest Paths on Random Forests

传送门 这题要求的期望,就是总权值(所有不在同一个连通块点对的贡献+同一连通块点对的贡献)/总方案(森林个数) 先求森林个数,森林是由一堆树组成的,而根据purfer序列,一棵\(n\)个点的有标号的树的个数为\(n^{n-2}\),然后因为点有标号所以可以考虑EGF,设树的EGF为\(F(x)\),那么森林的生成函数为\(e^{F(x)}\) 然后是不在同一个连通块点对的贡献,这等于不在同一个连通块点对个数\(*m^2\),然后不在同一个连通块点对个数又等于总点对个数\(-\)在同一个连通块点

[bzoj1005]明明的烦恼

根据purfer序列的原理,每一个purfer序列都一一对应了一棵树,每一个点在purfer序列中出现的次数就是它的度数,那么直接用组合数去计算即可,注意要加高精度 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 struct ji{ 5 int len,a[10001]; 6 }a; 7 int n,m,k,d[1001],vis[1001]; 8 void cheng(int b){ 9 a.a[1

[题解]BZOJ1004 序列函数

原题找不到了,应该是usaco之类的题目吧.给一个可以交题的链接:http://www.cqoi.net:2012/problem.php?id=1004 思路:将素数一个一个往里乘,保证扫描的顺序是从小到大的就可以了.思路跟usaco training的丑数有点像,算是那道题的简单版吧. 我的实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstri

bzoj 1005: [HNOI2008]明明的烦恼(组合数学 purfer sequence)

1005: [HNOI2008]明明的烦恼 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3945  Solved: 1563 [Submit][Status][Discuss] Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N(0 < N < = 1000), 接下来N行,第i+1行给出第i

BZOJ 1005: [HNOI2008]明明的烦恼 Purfer数列

Purfer数列: http://www.cnblogs.com/zhj5chengfeng/p/3278557.html 题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N(0<N<=1000),接下来 N 行,第 i+1 行给出第 i 个节点的度数 Di,如果对度数不要求,则输入 -1 Output 一个整数,表示不同的满足要求的树的个数,无解

如何理解“字符串是一组由16位组成的不可变的有序序列”

疑惑点: 1.16位 2.不可变 3.有序序列 解惑: 1.16位指的是:字符串每个字符所占用的空间为16bits 比特(2 bytes);这是因为JS采用的是unicode编码,每个字符需要2个字符. 2.不可变指的是: 字符串对象一旦创建出来,便不能被更改.这可能有些难理解,但事实确实如此.你可能会认为s+='1' 只是在 s 后面增加一个元素 1 而已,但事实是: 先将 s 拷贝一份,记为 temp 在 temp 末尾加上'1' 将 s 变量指向 temp,并删去原来的s 这一特性,可以从