首页 > 其他分享 >prufer 序列

prufer 序列

时间:2022-12-01 11:12:10浏览次数:75  
标签:线段 板子 序列 prufer 节点 性质

有标号无根树和 prufer 序列形成双射的关系。所以有一些性质。

其构造方式是拿一棵树出来,它有许多叶子。找出这些叶子中编号最小id,记录下它的父亲,丢掉。重复这一过程,会得到一个长度为 \(m-2\) 的序列,即 prufer 序列。用堆可以做到单 log,当然也有线性做法(如果它丧心病狂想卡的话),懒得记。

但是这玩意更多是用在无根树的计数方面。它具有很好的性质:每个元素都是可以取到 \([1,m]\) 中的任意数,独立的,即无根树的数量是 \(m^{m-2}\)。还有一个性质是一个点在树中的度等于序列中出现次数加一。主要是这两个性质,有几个比较基础的应用:

P4430 无脑板子。树的形态有 \(m^{m-2}\) 种,边的顺序有 \((m-1)!\) 种,乘起来即可。

P2290 板子。根据性质可以确定每个点在 prufer 序列中的出现次数,简单组合即可。然后有一些需要注意的边角情况但不重要。

P4981 板子,直接输出 \(m^{m-2}\) 即可。

CF156D link

提一嘴线段树优化建边,就不单独开一个随笔了。

除了板子似乎没有其它什么题了,其实更多的是一种思想。板子题link,线段树优化建图是拆边的一种方法,当一个点需要向一个区间内所有节点连边时,我们需要做的就是先把这些节点按照建线段树的方式来分组,然后对于一个区间找到对应的 \(\log n\) 级别的组对应的节点,向这些节点连边即可。细节有一些,比如要建两棵线段树,分别对应区间连入和区间连出;对应的叶子节点要建双向边等。

标签:线段,板子,序列,prufer,节点,性质
From: https://www.cnblogs.com/Feyn/p/16940794.html

相关文章

  • 一个关于序列的游戏——DP综合题
    题目有一个序列,你可以在上面删除符合要求的连续段若干次。每次删除都会得到连续段长度对应的分数。需要符合的要求为:1、相邻两个元素相差为12、如果某个元素不在连续段......
  • 判断子序列
    给定一个长度为 nn 的整数序列 a1,a2,…,an以及一个长度为 m 的整数序列 b1,b2,…,bm。请你判断 a 序列是否为 b 序列的子序列。#include<iostream>#includ......
  • 最长连续不重复子序列
    给定一个长度为n 的整数序列,请找出最长的不包含重复的数的连续区间长度。#include<iostream>#include<unordered_map>usingnamespacestd;constintN=100010;......
  • python用ARIMA模型预测CO2浓度时间序列实现|附代码数据
    全文下载链接:http://tecdat.cn/?p=20424时间序列为预测未来数据提供了方法。根据先前的值,时间序列可用于预测经济,天气的趋势。时间序列数据的特定属性意味着通常需要专门......
  • springboot消息之使用RabbitTemplate给rabbitmq发送和接收消息&序列化机制
    1-引入spring-boot-starter-amqp2-application.yml配置3-测试RabbitMQ  1--AmqpAdmin:管理组件  2--RabbitTemplate:消息发送处理组件======================......
  • oracle外键编写和设置序列和触发器来实现主键自增
    --CREATETABLEUSERS(--USER_IDNUMBER(11)PRIMARYKEY,--USER_NAMEVARCHAR2(100),--USER_PASSWORDVARCHAR2(100),--EMAILVARCHAR2(100),--SE......
  • 最长公共子序列
    最长公共子序列类问题最长公共子序列最长公共子序列给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符......
  • 用神经网络做运动时序序列。
    代码importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspddf=pd.read_csv('train.csv')df=df.drop(['ID'],axis=1)nmp=df.to_numpy()feature=......
  • 序列化字段
    BaseRequest@JsonProperty("TokenId")privateStringtokenId;@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")@JsonDeserialize(using=L......
  • 将序列化的json字符串内容写入Json 记事本文件,并且保存
    ///<summary>///将序列化的json字符串内容写入Json文件,并且保存///</summary>///<paramname="path">路径</param>///<paramname="jsonConents">Json内容</pa......