训练学习记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37517391/article/details/81807120

本篇博客用于整理一些训练过程中学习到的新知识、新套路。

目录

  1. 曼哈顿距离与切比雪夫距离的相互转化
  2. prufer序列

1. 曼哈顿距离 与 切比雪夫距离 的相互转化

曼哈顿距离

| x 1 x 2 | + | y 1 y 2 | = m a x ( x 1 x 2 + y 1 y 2 , x 1 x 2 y 1 + y 2 , x 1 + x 2 + y 1 y 2 , x 1 + x 2 y 1 + y 2 )
与某一个点的曼哈顿距离均为d的所有点构成了一个以该点为中心的对角线长度为2d的菱形。
这里写图片描述

切比雪夫距离

m a x ( | x 1 x 2 | , | y 1 y 2 | ) = m a x ( x 1 x 2 , x 1 + x 2 , y 1 y 2 , y 1 + y 2 )
与某一个点的切比雪夫距离均为d的所有点构成了一个以该点为中心的边长为2d的正方形。
这里写图片描述

两种距离之间的转化

由于两种等距离的形状均为正方形,因此可以通过旋转坐标系来互相转化。

(1)曼哈顿距离->切比雪夫距离

将所有的点做变换 ( x , y ) -> ( x + y , x y )

证明

x 3 = x 1 + y 1 , y 3 = x 1 y 1 , x 4 = x 2 + y 2 , y 4 = x 2 y 2
| x 1 x 2 | + | y 1 y 2 | = m a x ( x 1 x 2 + y 1 y 2 , x 1 x 2 y 1 + y 2 , x 1 + x 2 + y 1 y 2 , x 1 + x 2 y 1 + y 2 ) = m a x ( x 3 x 4 , y 3 y 4 , y 3 + y 4 , x 3 + x 4 ) = m a x ( | x 3 x 4 | , | y 3 y 4 | )

(2)切比雪夫距离->曼哈顿距离

将所有的点做变换 ( x , y ) -> ( x + y 2 , x y 2 )

证明

x 3 = x 1 + y 1 2 , y 3 = x 1 y 1 2 , x 4 = x 2 + y 2 2 , y 4 = x 2 y 2 2
m a x ( | x 1 x 2 | , | y 1 y 2 | ) = m a x ( x 1 x 2 , x 1 + x 2 , y 1 y 2 , y 1 + y 2 ) = m a x ( x 3 + y 3 x 4 y 4 , x 3 y 3 + x 4 + y 4 , y 3 x 3 + y 4 x 4 , y 3 + x 3 y 4 + x 4 ) = | x 3 x 4 | + | y 3 y 4 |


2.prufer序列

定义

prufer序列是一颗带编号的无根树的编码表示方式,一颗具有 n 个节点的带编号的无根树有唯一的长为 n 2 的prufer序列。

因为每种带编号的无根树对应唯一的prufer序列,所以prufer序列也被用作无根树的计数。

–如下图的无根树的prufer序列为–
这里写图片描述
3 , 5 , 1 , 3

1.如何从一个无根树得到prufer序列?

找树的编号最小的叶子节点,然后将与叶子节点相连的节点编号加入到prufer序列中去,然后删掉这个叶子节点。重复上述过程直到树上只剩2个节点为止,即得到长为 n 2 的prufer序列。

扫描二维码关注公众号,回复: 3149292 查看本文章

显然prufer序列是唯一的。

2.如何从prufer序列恢复一颗无根树?

找到prufer序列中未出现过的,编号最小的点,这个点即为最远一次被删除掉的,把这个点与prufer序列中的第一个点相连,并弹出prufer中的这个点,重复上述操作,prufer序列处理完成后,剩余两个点直接连到一起即可。

3.重要性质

1. prufer序列中每个编号出现的次数+1等于该编号的点在无根树中的度数。

2. n 个点的无向完全图计数为 n ( n 2 )

3. n 个点,每个点的度数为 D 1 , D 2 , . . . , D n ,则prufer序列的种数为 ( n 2 ) ! ( D 1 1 ) ! ( D 2 1 ) ! . . . ( D n 1 ) !

例题

n 个点中,其中有 m 个点的度数是未知的,求生成树的种数?

r e m a i n 为剩余出现次数
r e m a i n = ( n 2 ) ( D i 1 1 ) ( D i 2 1 ) . . . ( D i n m 1 )

先把 m 个点看成是一种点。
这样答案就是 ( n 2 ) ! ( D i 1 1 ) ! ( D i 2 1 ) ! . . . ( D i n m 1 ) ! r e m a i n !
而实际上剩余次数 r e m a i n 里面的点可以随意填,形成各种不同的排列,即答案要乘以 m r e m a i n

因此最终的答案就是:
( n 2 ) ! ( D i 1 1 ) ! ( D i 2 1 ) ! . . . ( D i n m 1 ) ! r e m a i n ! m r e m a i n

其他计数类型

1.有标号有根树的计数

n n 2 n = n n 1

2.无标号无根树的计数

3.无标号有根树的计数


猜你喜欢

转载自blog.csdn.net/weixin_37517391/article/details/81807120