曼哈顿距离与切比雪夫距离的转化及prufer序列

目录

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

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

曼哈顿距离

|x1x2|+|y1y2|=max(x1x2+y1y2,x1x2y1+y2,x1+x2+y1y2,x1+x2y1+y2)|x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1+y2,−x1+x2+y1−y2,−x1+x2−y1+y2)
与某一个点的曼哈顿距离均为d的所有点构成了一个以该点为中心的对角线长度为2d的菱形。
这里写图片描述

切比雪夫距离

max(|x1x2|,|y1y2|)=max(x1x2,x1+x2,y1y2,y1+y2)max(|x1−x2|,|y1−y2|)=max(x1−x2,x1+x2,y1−y2,y1+y2)
与某一个点的切比雪夫距离均为d的所有点构成了一个以该点为中心的边长为2d的正方形。
这里写图片描述

两种距离之间的转化

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

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

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

证明

x3=x1+y1,y3=x1y1,x4=x2+y2,y4=x2y2x3=x1+y1,y3=x1−y1,x4=x2+y2,y4=x2−y2
|x1x2|+|y1y2|=max(x1x2+y1y2,x1x2y1+y2,x1+x2+y1y2,x1+x2y1+y2)=max(x3x4,y3y4,y3+y4,x3+x4)=max(|x3x4|,|y3y4|)|x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1+y2,−x1+x2+y1−y2,−x1+x2−y1+y2)=max(x3−x4,y3−y4,−y3+y4,−x3+x4)=max(|x3−x4|,|y3−y4|)

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

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

证明

x3=x1+y12,y3=x1y12,x4=x2+y22,y4=x2y22x3=x1+y12,y3=x1−y12,x4=x2+y22,y4=x2−y22
max(|x1x2|,|y1y2|)=max(x1x2,x1+x2,y1y2,y1+y2)=max(x3+y3x4y4,x3y3+x4+y4,y3x3+y4x4,y3+x3y4+x4)=|x3x4|+|y3y4|max(|x1−x2|,|y1−y2|)=max(x1−x2,−x1+x2,y1−y2,−y1+y2)=max(x3+y3−x4−y4,−x3−y3+x4+y4,y3−x3+y4−x4,−y3+x3−y4+x4)=|x3−x4|+|y3−y4|


2.prufer序列

定义

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

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

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

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

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

显然prufer序列是唯一的。

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

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

3.重要性质

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

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

3. nn个点,每个点的度数为D1,D2,...,Dn,则prufer序列的种数为(n2)!(D11)!(D21)!...(Dn1)!(n−2)!(D1−1)!(D2−1)!...(Dn−1)!

例题

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

remainremain为剩余出现次数
remain=(n2)(Di11)(Di21)...(Dinm1)remain=(n−2)−(Di1−1)−(Di2−1)−...−(Din−m−1)

先把mm个点看成是一种点。
这样答案就是(n2)!(Di11)!(Di21)!...(Dinm1)!remain!
而实际上剩余次数remainremain里面的点可以随意填,形成各种不同的排列,即答案要乘以mremainmremain

因此最终的答案就是:
(n2)!(Di11)!(Di21)!...(Dinm1)!remain!mremain(n−2)!(Di1−1)!(Di2−1)!...(Din−m−1)!remain!mremain

其他计数类型

1.有标号有根树的计数

nn2n=nn1nn−2∗n=nn−1

2.无标号无根树的计数

3.无标号有根树的计数


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初一模拟赛总结(2019.3.9)

成绩: rank算上了其他大佬 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4222lyflyflyf230230230100100100303030000100100100333hkyhkyhky909090000000000909090444fyfyfy808080000606060000202020444whdwhdwhd808080202020606060000000666lth…

牛客练习赛69E-子串【树状数组】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7329/E 题目大意 给出一个nnn的排列,求有多少个区间[l,r][l,r][l,r]使得最大值是rrr,最小值是lll。 解题思路 首先对于一个位置的值作为左端点和右端点都有一段合法区间(到左边第一个比…

[译]如何在.NET Core中使用System.Drawing?

你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分。最初是把.NET Core作为云端框架设计的,它不包含非云端相关API。另一方面,.NET Core是跨平台框架,它不包含任何操作系…

【dfs】棋盘变幻

棋盘变幻 题目大意: 有一些棋子(黑/白),可以将某一列的棋子颜色反转,要黑棋尽可能小 原题: 题目描述 小G在一个n*m的棋盘上随意放上了一些黑色的棋子,然后又在剩下所有没有放棋子的格子里放…

组合数学与数论函数专题

组合数学专题 专题简介 本专题包含了一些组合数学中常见的套路和方法,如拉格朗日插值,动态规划,容斥原理,狄利克雷卷积,线性筛,杜教筛 等等. 目录 2018 四川省赛GRISAIA (数论分块)HDU 6428 Calculate (狄利克雷卷积,线性筛)BZOJ4559 成绩比较 (动态规划,拉格朗日插值)BZOJ…

关于Visual Studio 2019的前期详情

近日,来自微软公司的 John Montgomery 正式宣布,Visual Studio 2019已进入开发阶段。Montgomery 表示,之所以选择在这个时间点公开这个消息,是因为微软准备在 GitHub 上公开可见的项目(包括 .NET 和 Roslyn&#xff09…

nssl1522-简单数数题【dp】

正题 题目大意 nnn个数的一个集合,求一个有多少个子集使得这个子集的所有子集的权值和的和是mmm的倍数 解题思路 考虑dp,选中集合中每一个数的贡献次数是2∣S∣−12^{|S|-1}2∣S∣−1,设fi,j,kf_{i,j,k}fi,j,k​表示选到第iii,现…

蛋糕店

蛋糕店 题目大意: 有n个人,让他们排队,每个人都有一个愤怒值,总值为每个人的愤怒值乘上(他在队列中的位置-1)加在一起 原题: 题目描述 最近小G新开了一家蛋糕店。开业第一天,一…

开源的,跨平台的.NET机器学习框架ML.NET

微软在Build 2018大会上推出的一款面向.NET开发人员的开源,跨平台机器学习框架ML.NET。 ML.NET将允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学…

nssl1519-背包签到题【数论】

正题 题目链接:http://10.156.31.134/contestnew.aspx?cid189 题目大意 nnn种物品,每种aia_iai​个。放进kkk个有序盒子求方案数(可以不放完) 解题思路 不放完其实就是k1k1k1个盒子,插板法求CkaiaiC_{ka_i}^{a_i}Ckai​ai​​&…

【dfs】相似度

相似度 题目大意: 有两个图,问他们的相似度是多少(相似度为连接两个点的相样线的条数) 原题: 题目描述 小G通过摆放一些城市和道路构成了一个世界地图。趁着小G出去玩的时候,大G把小G的世界地图上的城…

虚树-树上动态规划的利器

虚树 问题引入 在一类树上动态规划问题中,题目给出的询问往往包含树上的很多各节点,并保证总的点数规模小于某个值. 如果我们直接在整颗树上进行dpdp的话,时间复杂度与询问的次数有关,这显然是不可接受的,如果我们可以找到一种动态规划的方法,使其时间复杂度与询问中点的实际…

牛客练习赛69D-火柴排队【dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7329/D 题目大意 nnn个数的序列,排序后让随机kkk个数加上ddd,求依旧满足单调上升的期望概率 解题思路 对于一个位置加上ddd后会让到后面一段范围内都得加上ddd。我们预处理一个lil_ili​表示如果ii…

微软推出Visual Studio Kubernetes工具包预览版

微软表示,利用 Visual Studio Kubernetes 这个工具,使用者可以直接在该环境中,构建 Kubernetes 容器应用程序项目,或者让现有的 .NET 网页应用程序也兼容 Kubernetes。除了公有云基础架构环境要支持 Kubernetes,微软现…

伸展树模板

伸展树模板 #include <iostream> #include <cstdio>#define pr(x) std::cout << #x << " : " << x << std::endlclass SplayTree{ public:struct Node{int val;int size;int tag;Node *father;Node *son[2];Node(int val,Node *…

【DP】Sam数

Sam数 题目大意&#xff1a; 问位数为n&#xff0c;且每一位的数字与相邻数字的差值小于等于2的数有多少个 原题&#xff1a; 题目描述 小G最近发现了一种非常有趣的数&#xff0c;他将这种数称之为Sam数。Sam数具有以下特征&#xff1a;相邻两位的数字之差不超过2。小G还…

基于docker 如何部署surging分布式微服务引擎

1、前言转眼间surging 开源已经有1年了&#xff0c;经过1年的打磨&#xff0c;surging已从最初在window 部署的分布式微服务框架&#xff0c;到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎&#xff0c;再把业务进行剥离&#xff0c; 通过配置路径就能驱…

P4213-[模板]杜教筛(Sum)

正题 题目链接:https://www.luogu.com.cn/problem/P4213 题目大意 给出nnn&#xff0c;求∑i1nφ(i)\sum_{i1}^n\varphi(i)i1∑n​φ(i) 和 ∑i1nμ(i)\sum_{i1}^n\mu(i)i1∑n​μ(i) 解题思路 考虑如何将φ\varphiφ卷起来&#xff0c;我们可以乘上一个函数I(I(x)1)I(I(x)1…

线段树专题-等差子序列 BZOJ-2124

线段树专题-等差子序列 感谢 感谢孙耀峰的线段树PPT,使我获益匪浅. 题目来源 BZOJ−2124BZOJ-2124BZOJ−2124 题意 给出长度为nnn的1−n1-n1−n的排列AAA 问是否存在一组1≤p1≤p2≤...≤pl≤n,l≥31 \le p_1 \le p_2 \le ... \le p_l \le n,l \ge 31≤p1​≤p2​≤...≤p…

【模拟】小游戏

小游戏 题目大意&#xff1a; 有n个数形成一个环&#xff0c;从第S个开始&#xff0c;先往后数N个数然后把这个数取出来&#xff0c;再往前数K个数把这个数取出来&#xff0c;问取的数字依次是什么 原题&#xff1a; 题目描述 【题目背景】 yk同学是一个灰常灰常有爱的同…