bzoj1211】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=1211 (题目链接) 题意 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数. Solution prufer序列,明明的烦恼简化版. 代码 // bzoj1211 #include<algorithm> #include<iost…
题目链接 bzoj1211: [HNOI2004]树的计数 题解 prufer序 可重排列计数 代码 #include<bits/stdc++.h> using namespace std; #define int long long int n = 0; int b[10007]; int cnt[10007]; void Div(int x,int k = 1) { for(int j = 2;j * j <= x;++ j) { while(x % j == 0) { cnt[j]…
题意:一个有n个结点的树,设它的结点分别为v1, v2, …, vn, 已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵. 其中1<=n<=150,输入数据保证满足条件的树不超过10^17个. 思路: Martix67: 一个有趣的推广是,n个节点的度依次为D1, D2, …, Dn的无根树共有(n-2)! / [ (D1-1)!(D2-1)!..(Dn-1)! ]个,因为此时Prüfer编码中的数字i恰好出现Di-1次. POPOQQQ: 注意此题无解需要输出0 当n!=1…
洛谷P2290 [HNOI2004]树的计数 bzoj1211 [HNOI2004]树的计数 Description 一个有\(n\)个结点的树,设它的结点分别为\(v_1,v_2,\cdots, v_n\),已知第\(i\)个结点\(v_i\)的度数为\(d_i\) 问满足这样的条件的不同的树有多少棵. Input 第一行是一个正整数\(n\),表示树有\(n\)个结点.第二行有\(n\)个数,第\(i\)个数表示\(d_i\),即树的第\(i\)个结点的度数.其中\(1\le n\le 15…
题目大意: 告诉你树上每个节点的度数,让你构建出这样一棵树,问能够构建出树的种树 这里注意数量为0的情况,就是 当 n=1时,节点度数>0 n>1时,所有节点度数相加-n!=n-2 可以通过通过除了根,必然有n-1个节点作为上一个节点的儿子来理解 然后通过学习prufer序列可知 每一颗树都能够建成唯一的序列,这里的n-2个数就是任意插入到prufer序列中,这很明显就是一个排列,那么之后就是计算 ans = (n-2)!/(w[1]!*w[2]!..w[n]!) w[i]表示i节点上的度数减…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1211 分析: 关于无根树的组合数学问题肯定想到Prufer序列,类似bzoj1005那题 说下prufer序列的性质: 1.一个无根树对应一个prufer序列 2.一个n个节点无根树对应的prufer序列长度为n-2 3.prufer序列中某节点出现的次数==这个节点在对应的无根树中度数-1 所以这题求无根树的数量等价于求prufer序列的数量. 注意无解的情况就行了.…
prufer码水题(n-2)!/[(d1-1)!*(d2-1)!*…*(dn-1)!] ..] of longint; x,n,i,j,s:longint; ans:int64; begin readln(n); then begin readln(x); ) ); halt; end; to n do begin read(x); ) or (x>n) then begin writeln(); halt; end; do inc(c[j]); s:=s+x-; end; then begin…
1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1245  Solved: 383[Submit][Status] Description 一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di的树的个数. Input 第一行是一个正整数n,表示树有n个结点.第二…
Description 给定一棵树每个节点度的限制为di,求有多少符合限制不同的树. Solution 发现prufer码和度数必然的联系 prufer码一个点出现次数为它的度数-1 我们依然可以把树转成序列进行处理 只是每个元素出现次数受到了限制 于是就是有重复元素的排列问题了 公式很好推 Code 特殊情况判一判 #include<cstdio> #include<algorithm> #include<cstring> #define ll long long u…
题目描述 给你\(n\)和\(n\)个点的度数,问你有多少个满足度数要求的生成树. 无解输出\(0\).保证答案不超过\({10}^{17}\). \(n\leq 150\) 题解 考虑prufer序列. 答案为 \[ \frac{(n-2)!}{\prod(d_i-1)!} \] 直接乘会爆long long,要转成\(n-1\)个组合数的乘积.当然你也可以分解质因数. 如果\(n\neq 1\)且\(d_i=1\),输出\(0\) 如果\(\sum d_i\neq 2n-2\),输出\(0\…