luogu P4981 父子】的更多相关文章

题目背景 上演在各大学男生寝室的日常 :: A :A: "我没带纸,快来厕所救我!" B :B: "叫爸爸." A :A: "爸爸!" ........................................................................................ A :A: "我没钱了,能借我点吗." B :B: "叫爸爸." A :A: "爸爸!…
prufer编码 当然你也可以理解为 Cayley 公式,其实这个公式就是prufer编码经过一步就能推出的 P4430 小猴打架 P4981 父子 这俩题差不多 先说父子,很显然题目就是让你求\(n\)个点的有根树有几条 \(n\)个点的无根树的 prufer 编码有\(n-2\)位,且编码和树一一对应并且每一位可以重复 那么就有\(n^{n-2}\)种构造无根树的方法 所以,就让每一个节点轮流当根,所以答案就是\(n^{n-2}\times n=n^{n-1}\) #include<cstd…
CayleyCayley公式的定义是这样的,对于n个不同的节点,能够组成的无根树(原来是无向连通图或者是有标志节点的树)的种数是n^(n-2)种.(这里让大家好理解一点,就写成了无根树,其实应该是一样的概念) 那么我们的初步问题就解决了,接下来就是解决无根树和有根树之间的转换. 但是转换很难吗?把有根树转换成根节点有nn种情况的无根树,也就是n^(n-2) * n,化简就是n^(n-1).答案也就是这个玩意了. 因为这道题,n比较大,所以就用一下快速幂. #include <iostream>…
先安利一发.让我秒懂.. 第一次讲这个是在寒假...然而当时秦神太巨了导致我这个蒟蒻自闭+颓废...早就忘了这个东西了... 结果今天老师留的题中有两道这种的:Luogu P4981 P4430 然后决定了解一下... 一.Prufer序列 Prufer序列,可以用来解一些关于无根树计数的问题. Prufer序列是一种无根树的编码表示,对于一棵n个节点带编号的无根树,对应唯一一串长度为n-1的Prufer编码,这性质很好. 1.无根树转化为Prufer序列 首先定义无根树中度数为1的节点是叶子节…
看到\(purfer\)序列板子后,想到这个名词在哪见过,于是找到了一个题,还带出一个: \(T1\). 题目链接:P4430 小猴打架 开始极其懵逼,考虑过大力容斥,但还是失败了,原来是: Cayley定理(凯莱,反正是个神犇就对了): \(n\)个节点的带标号的形态不同的无根树有\(n^{n-2}\)个, 再乘上\((n-1)!\)种生成方式即可, \[ans=(n-1)!×n^{n-2}\] 时间复杂度\(O(n+logn)\),你要是会快速阶乘,就可以\(O(logn)\)了. \(Co…
prufer 编码 对于一个无根树,他的 prufer 编码是这样确定的: 每次找到编号最小的一个叶子节点,也就是度数为\(1\)的节点,把和它相连的点,加入 prufer 编码序列的末尾,然后把这个点从树中删掉 如果当前树只有两个节点了,就停止 那么,通过给定的无根树求 prufer 编码就很简单了 比如下面这个无根树,它的 prufer 编码就是\(\texttt{125214}\) 这个 prufer 编码有一些很显然的性质 首先长度肯定是\(n-2\),但每个元素可能相同,然后对于每个无…
[Luogu 1196] NOI2002 银河英雄传说 话说十六年前的 NOI 真简单... 我一开始还把题看错了- 题意:一群人,每个人各自成一队,每次命令让两队首位相接合成一队,每次询问问你某两个人之间有几个人. 容易想到合并用并查集来实现. 至于计数,\(\mathrm{sum}_i\) 表示 \(i\) 到队首有几个人(如果 \(i\) 在队首,\(\mathrm{sum}_i = 0\)): \(\mathrm{num}_i\) 表示以 \(i\) 为队首的队伍有几个人(如果 \(i\…
Luogu P3379 题意:对于两个节点,寻找他们的最近公共祖先. 一个显而易见的解法是对于每一个节点我们都往上遍历一遍,记录下它每一个祖先,然后再从另一个节点出发,一步一步往上走,找到以前记录过第一个节点就是这两个节点的LCA 事实上在这样的数据规模下,这种解法的时间复杂度是让人无法接受的. 很容易发现,这样的解法慢在两个节点是一步一步往上走的,也许可以想个办法一次跳一大步? 于是我们引入了倍增法求LCA. 我们知道,对于任意一个整数数,都可以使用\(2^k+2^{k-1}+...+2^0\…
我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么要这样子抛出异常,后来通过学习<Thinking in Java>,我才明白其中的道理,现在我再来温习一下. 一.子类方法只能抛出父类方法的异常或者是其子异常 对于这种限制,主要是因为子类在做向上转型的时候,不能正确地捕获异常 package thinkinginjava; public abst…
//==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组件通过props调用:  参考:http://m.blog.csdn.net/article/details?id=51034349 2.父组件调用子组件: 父组件在创建子组件时 ,  设置ref属性,在需要调用的时候  使用this.refs.refName获取该组件:参考:  http://m.…