Prufer Code】的更多相关文章

1069. Prufer Code Time limit: 0.25 secondMemory limit: 8 MB A tree (i.e. a connected graph without cycles) with vertices is given (N ≥ 2). Vertices of the tree are numbered by the integers 1,…,N. A Prufer code for the tree is built as follows: a leaf…
Prufer Code Time limit: 0.25 secondMemory limit: 8 MB A tree (i.e. a connected graph without cycles) with vertices is given (N ≥ 2). Vertices of the tree are numbered by the integers 1,-,N. A Prufer code for the tree is built as follows: a leaf (a ve…
1069. Prufer Code Time limit: 0.25 secondMemory limit: 8 MB A tree (i.e. a connected graph without cycles) with vertices is given (N ≥ 2). Vertices of the tree are numbered by the integers 1,…,N. A Prufer code for the tree is built as follows: a leaf…
记录每个节点的出度,叶子节点出度为0,每删掉一个叶子,度数-1,如果一个节点的出度变成0,那么它变成新的叶子. 先把所有叶子放到优先队列中. 从左往右遍历给定序列,对于root[i],每次取出叶子中编号最小的那个与root[i]相连,并且--degree[ root[i] ],如果degree[ root[i] ]为0,那么把root[i]放入优先队列. #include <cstdio> #include <cstring> #include <cstdlib> #i…
ZOJ Problem Set - 1097 Code the Tree Time Limit: 2 Seconds      Memory Limit: 65536 KB A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a tree is built as foll…
Code the Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2350   Accepted: 906 Description A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a…
Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2292   Accepted: 878 Description A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a tree is built…
Code the Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2259   Accepted: 859 Description A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a…
G.Code the Tree Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 35  Solved: 18 [Submit][Status][Web Board] Description A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code…
本文介绍北京大学ACM网站2567号题目的解法.介绍部分基本翻译自网站上的题目介绍. 题目介绍:    给定一棵各节点编号为整数1,2,3...n的树(例如,无环连通图),其Prufer编码(Prufer code,不知道有没有标准的译法,用金山词霸没有查到,用Google也没有搜索到)构造方法如下:从树中去掉编号值最小的叶子节点(仅与一条边邻接的节点),以及与它邻接的边后,记下与它邻接的节点的编号.在树中重复这个过程,知道只剩下一个节点(总是编号为n的节点)为止.记下的n-1个编号序列就是树的…
问题: 4个标记为1,2,3,4的节点构成自由树(算法导论里的定义,连接着,无环,无向的图),一共有多少种构造方法?如果N个节点呢? 解决方法: 4个节点可以通过穷举的方式得到答案,一共有16中方式. 第一类构造方式,取一个节点做中心,剩余三个节点与其相连,一共4种(每个节点做一次中心). 第二类构造方式,四个节点连成一条线,可以看成个排列,第一个有4种取法,第二个有3种,依次类推.但是因为例如1234与4321结构上是一样的, 所以总的排列数除以2才是总共的构造数,即 $\frac{4!}{2…
2017 CERC Problem A:Assignment Algorithm 题目描述:按照规则安排在飞机上的座位. solution 模拟. 时间复杂度:\(O(nm)\) Problem B:Buffalo Barricades 题目描述:将二维平面划分为一个个单位格,在平面上有一些被标记的格子.将\(x,y\)轴当成是围栏,现在以此给出一些坐标,每次从那个坐标出发向\(x, y\)轴建围栏,并输出新围栏围住的被标记格子数. solution 待解决. C:Cumulative Code…
题目大意:2567是给出一棵树,让你求出它的Prufer序列.2568时给出一个Prufer序列,求出这个树. 思路:首先要知道Prufer序列.对于随意一个无根树,每次去掉一个编号最小的叶子节点,并保存这个节点所连接的节点所得到的序列就是这棵树的Prufer序列. 这个序列有十分优雅的性质.它能与无根树一一相应.因此.两个标号一样的无根树得到的Prufer序列也一定是一样的. 此外,设一个节点的度数是d[i],那么他会在Prufer序列中出现d[i] - 1次. 2567:记录每个节点的度.依…
Description 给定一棵树每个节点度的限制为di,求有多少符合限制不同的树. Solution 发现prufer码和度数必然的联系 prufer码一个点出现次数为它的度数-1 我们依然可以把树转成序列进行处理 只是每个元素出现次数受到了限制 于是就是有重复元素的排列问题了 公式很好推 Code 特殊情况判一判 #include<cstdio> #include<algorithm> #include<cstring> #define ll long long u…
Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森林的小猴都会成为好朋友. 现在的问题是,总共有多少种不同的打架过程. 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程.   Solution 有一种神奇的prufer码,这种码和一棵树一一对应. 由树…
Description Input Output Sample Input Sample Output Solution 题意:给你$n$个点,还有每个点的度数,问你任选$i(1\leq i \leq n)$个点构成树的方案数. 这种统计生成树的题,很容易想到用$prufer$序列搞. $prufer$序列有一个很重要的性质,一个度数为$d$的点会在$prufer$序列里出现$d-1$次. 那么我们设$f[i][j][k]$表示$DP$完前$i$个点,选了其中的$j$个点,当前$prufer$序…
Brief Description 给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线,可产生多少棵度数满足要求的树? Algorithm Design 结论题. 首先可以参考这篇文章了解一下什么是Prufer编码: Cayley公式是说,一个完全图\(K_n\)有\(n^{n-2}\)棵生成树,换句话说n个节点的带标号的无根树有\(n^{n-2}\)个.今天我学到了Cayley公式的一个非常简单的证明,证明依赖于Prüfer编码,它是对带标号无根树的一种编码方式. 给定一棵带标…
树 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 3 2 2 1 Sample Output   3 3 2 HINT Solution 由于是带标号的无根树的计数,于是我们运用prufer编码的性质来解题. prufer编码的几个性质: 1.对于大小为s的树,prufer编码是一个长度为 s-2 的序列: 2.i在序列中出现的次数<deg[i]: 3.一个prufer编码表示一棵树.…
题目描述 给定一个完全图,保证\(w_{u,v}=w_{v,u}\)且\(w_{u,u}=0\),等概率选取一个随机生成树,对于每一对\((u,v)\),求\(dis(u,v)\)的期望值对\(998244353\)取模. 输入 第一行一个数\(n\) 接下来\(n\)行,每行\(n\)个整数,第\(i\)行第\(j\)个整数表示\(w_{i,j}\) 输出 输出共\(n\)行,每行\(n\)个整数,第\(i\)行第\(j\)个整数表示\(dis(i,j)\)的期望值 样例 样例输入 4 0 1…
Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N(0 < N < = 1000),接下来N行,第i+1行给出第i个节点的度数Di,如果对度数不要求,则输入-1 Output 一个整数,表示不同的满足要求的树的个数,无解输出0 Sample Input - - Sample Output HINT 两棵树分别为1-2-3;1-3-2 Soluti…
传送门 Solution 根据prufer序列做的题,具体可以看这里 还知道了一种避免高精除的方法quq Code #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define F(i,a,b) for(register int i=(a);i<=(…
我们概括题意,即将n个点组成一棵树的方案数. 所以是prufer. 又因为要考虑连边顺序,因此再乘上(n-1)!. 唔...难道你们都知道为什么是(n-1)!而不是n!吗... 反正我被这个地方卡了... 我认为选第一个点的方案为n,第二个为n-1,...所以应该是n!.. 但是是错的,因为对于每一棵树,它的形态已经固定了,考虑的是连边的顺序. 有n-1条边,也就是(n-1)!... 其实我这道题想了很久,我刚开始想的是Catlan数,因为开始选出一个数,后来再在n-1个数中选出一个数 接着在已…
题面 有n个点,它们从1到n进行标号,第i个点的限制为度数不能超过A[i]. 现在对于每个s (1 <= s <= n),问从这n个点中选出一些点组成大小为s的有标号无根树的方案数. 100%的数据:n <= 100 100 prufer序列 每个大小为n,有标号无根树都可以表示成一个长度为(n-2)且取值在[1,n]的序列. 这个序列就叫prufer序列. 树转prufer序列 1.每次查找一个标号最小且度数为一的点,使与之相连的点的编号加入序列尾: 2.删除树中的这个点. prufe…
  prufer序列 定义 Prufer数列是无根树的一种数列.在组合数学中,Prufer数列由有一个对于顶点标过号的树转化来的数列,点数为n的树转化来的Prufer数列长度为n-2. 描述 eg 将Prufer数列转化成树的方法 一种生成Prufer序列的方法是迭代删点,直到原图仅剩两个点.对于一棵顶点已经经过编号的树T,顶点的编号为{1,2,...,n},在第i步时,移去所有叶子节点(度为1的顶点)中标号最小的顶点和相连的边,并把与它相邻的点的编号加入Prufer序列中,重复以上步骤直到原图…
目录 @description@ @solution@ @accpeted code@ @details@ @description@ 求有多少 n 点 n 边的无向连通图,满足第 i 个点的度数为 \(d_i\). 原题传送门. @solution@ 如果是树显然就 prufer 定理:基环树就考虑拓展一下. 枚举环上的点集合 S,则环内部能够连出的方案数为 \(\frac{(|S| - 1)!}{2}\)(注意环的大小 \(|S| \geq 3\)). 接着,将环缩成一个新点 x',则它的度…
LINK:优雅的绽放吧,墨染樱花 当时考完只会50分的做法 最近做了某道题受到启发 故会做这道题目了.(末尾附30分 50分 100分code 看到度数容易想到prufer序列 考虑dp统计方案数. 设f[i][j]表示前i个数字占了prufer序列j个位置的方案数.最后答案为f[n][n-2]. 容易想到转移 \(f[i][j]+=f[i-1][k]\cdot C(n-k,j-k)\cdot w_i^{j-k+1}\cdot (j-k+1)\) 复杂度n^3 期望得分30. 容易发现第二维是一…
正题 题目链接:https://ac.nowcoder.com/acm/contest/11161/C 题目大意 \(n\)个点加\(m\)条边使得不存在环,每种方案的权值是所有联通块的大小乘积. 求所有方案的权值和. \(1\leq n\leq 10^9,1\leq m\leq 10^7\) 解题思路 就是分成\(n-m\)个树,然后权值比较麻烦. 但是发现权值是大小,所以可以理解为有根树,这样就是纯粹的求方案数了. 然后我们还可以优化,设虚根\(0\),我们限制其度数为\(n-m\)就可以分…
题面 我编不下去了! 给出 n n n 个点,第 i i i 个点的度数限制为 a i a_i ai​,现在需要选出 x x x 个点构成一颗树,要求这 x x x 个点中每个点的度数不超过这个点的 a i a_i ai​ 值,求 x = 1 , 2 , - , n x=1,2,\ldots,n x=1,2,-,n 时的方案数. 两种方案不同,当且仅当选出的点集不同或者连边的方式不同. 输入格式 第一行一个正整数 T T T,代表有 T T T 组数据.每组数据第一行一个正整数 n n n 第二…
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 FrontPage.Dreamweaver.EditPlus.EmEditor.Notepad++.VIM.Sublime Text.Xcode 等等.它们都是很优秀的编辑器,尤其是 Sublime Text ,十分适合 web 开发. VS code有着 软件设计理念和它背后的团队,从软件架构.资金资源和…
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code Review呢?我们当时面临着代码混乱.Bug频出的状况.当时我觉得要有所改变,希望能提高产品的代码质量,改善开发团队面临的困境.并且我个人在开发上有很多经验,也希望这些知识能够在团队内传播.各种考虑后,我们最后认为推行Code Review能改善或解决我们面临的很多问题. 这篇文章的目的不是告诉大家怎么在…