首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
P2290 [HNOI2004]树的计数(bzoj1211)
】的更多相关文章
P2290 [HNOI2004]树的计数(bzoj1211)
洛谷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…
Luogu P2290 [HNOI2004]树的计数 Prufer序列+组合数
最近碰了$prufer$ 序列和组合数..于是老师留了一道题:P2624 [HNOI2008]明明的烦恼 qwq要用高精... 于是我们有了弱化版:P2290 [HNOI2004]树的计数(考一样的可还行OvO) 首先前置知识:$Prufer序列$ 然后,因为对于一个$ Prufer $序列有$n-2$ 项,而每个点的度数-1是这个点在$ Prufer$ 序列中出现的次数 所以...这不是多重集的排列吗(不懂多重集?) 所以我们成功了一半(雾) 在计算时会爆$ long \space long…
P2290 [HNOI2004]树的计数
P2290 [HNOI2004]树的计数prufer序列模板题 #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cmath> #include <cstring> #define inf 2147483647 #define N 1000010 #define p(a) putchar(a) #define Fo…
洛谷 P2290 [HNOI2004]树的计数
题目描述 输入输出格式 输入格式: 输入文件第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的树不超过10^17个. 输出格式: 输出满足条件的树有多少棵. 输入输出样例 输入样例#1: 4 2 1 2 1 输出样例#1:2 题解:质因数分解+prufer数列以前学过prufer数列...全忘了....n个点的无根树对应的数列的长度为N-2,这说明一个n个点的无根树有n^(n-2)种树转prufer数…
LUOGU P2290 [HNOI2004]树的计数(组合数,prufer序)
传送门 解题思路 \(prufer\)序,就是所有的不同的无根树,都可以转化为唯一的序列.做法就是每次从度数为\(1\)的点中选出一个字典序最小的,把这个点删掉,并把这个点相连的节点加入序列,直到只剩两个节点.然后这个东西有一个显然的性质就是所有点会在序列中出现这个点的度数\(-1\)次,这个性质有一个推论就是给你一棵树所有点的度数,你可以算出无根树不同形态的个数.公式为\(ans=\frac{(n-2)!}{\prod_{i=1}^{n}(deg[i]-1)!}\).然后注意要质因数分解,否则…
bzoj1211: [HNOI2004]树的计数 prufer编码
题目链接 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]…
BZOJ1211: [HNOI2004]树的计数
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个结点.第二…
prufer BZOJ1211: [HNOI2004]树的计数
以前做过几题..好久过去全忘了. 看来是要记一下... [prufer] n个点的无根树(点都是标号的,distinct)对应一个 长度n-2的数列 所以 n个点的无根树有n^(n-2)种 树 转 prufer数列: 每次删除编号最小的叶子节点,将与其相连的那个点 加入 prufer数列 直到树中只剩两个点,就结束 prufer数列 转 树: 首先是有个1到n的集合G,每次将prufer数列当前的第一项 和 当前G中 不在当前prufer里有的 最小的 元素x 连边. 接着删除当前pruf…
bzoj1211: [HNOI2004]树的计数(prufer序列+组合数学)
1211: [HNOI2004]树的计数 题目:传送门 题解: 今天刚学prufer序列,先打几道简单题 首先我们知道prufer序列和一颗无根树是一一对应的,那么对于任意一个节点,假设这个节点的度数为k,那么在prufer序列里面这个节点就会出现k-1次 (反过来也同理成立) 那么具体的原因这里有解释: 对于任意一个节点在prufer序列里出现一次的话,那么就表示我有一个孩子被删了,那么少了的一次去哪里了呢,因为每次加进去的都是父亲节点,那么少的肯定就是我自己连出去的一条边啊... 知道了这个…
[bzo1211][HNOI2004]树的计数_prufer序列
树的计数 bzoj-1211 HNOI-2004 题目大意:题目链接. 注释:略. 想法: prufer序列有一个性质就是一个数在prufer序列中出现的次数等于这个prufer序列生成的树中它的度数-1. 故此我们就是要求$C_{n-2}^{d_1-1}\times C_{n-2-d_1+1}^{d_2-1}\times \cdots \times C_{d_n-1}^{d_n-1}$. 随便搞搞就行了. Code: #include<cstdio> #include<cstring&…