先来看一下曼哈顿距离和切比雪夫距离的定义。(以下我可能用\(D_m,D_q\)来表示两者)

曼哈顿距离:\(|x_1-x_2|+|y_1-y_2|\)

切比雪夫距离:\(max(|x_1-x_2|,|y_1-y_2|)\)

至于为什么说他俩关系♂,就是因为他们可以相互转化!

转换关系如下:当坐标为\((x,y)\)时

\(D_m=\)坐标为\((x+y,x-y)\)时的\(D_q\)

\(D_q=\)坐标为\((\dfrac{x+y}{2},\dfrac{x-y}{2})\)时的\(D_q\)

经过向\(Itst\)神仙询问,将其区分开来:

\(D_m\)常用于求和,而\(D_q\)常用于\(max,min\)

而其中的绝对值,可以用排序去掉。

\(LuoguP2906Cow Neighborhoods\)

做法:现将曼哈顿距离转化为切比雪夫,排序,枚举每个点,删掉\(x\)的差已经大于\(C\)的点。

再用\(set\)维护新\(y_i\)(及点的编号),找到第一个满足条件的点后就加群,在判断前一个是否满足,加群。

群的关系用并查集维护就好了。

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{int f=1,w=0;char x=0;while(x<'0'||x>'9') {if(x=='-') f=-1; x=getchar();}while(x!=EOF&&x>='0'&&x<='9') {w=(w<<3)+(w<<1)+(x^48);x=getchar();}return w*f;
}
const int N=100010;
int n,fa[N],C,l=1,cnt[N],ansx,ans;
pair<int,int> p[N];
set<pair<int,int> > s;
inline int Find(int x) {return fa[x]==x?x:fa[x]=Find(fa[x]);}
main(){
#ifndef ONLINE_JUDGEfreopen("A.in","r",stdin);
#endifn=read(); C=read();for(int i=1,x,y;i<=n;i++)x=read(),y=read(),p[i]=make_pair(x+y,x-y),fa[i]=i;sort(p+1,p+n+1);s.insert(make_pair(p[1].second,1));s.insert(make_pair(-1LL<<60,0)),s.insert(make_pair(1LL<<60,0));for(int i=2;i<=n;i++){while(p[i].first-p[l].first>C) s.erase(make_pair(p[l].second,l)),l++;set<pair<int,int> >::iterator it=s.lower_bound(make_pair(p[i].second,0));if(it->first-p[i].second<=C) fa[Find(i)]=Find(it->second);it--;if(p[i].second-it->first<=C) fa[Find(i)]=Find(it->second);s.insert(make_pair(p[i].second,i));}for(int i=1;i<=n;i++) {cnt[Find(i)]++;if(Find(i)==i) ans++;}for(int i=1;i<=n;i++) ansx=max(ansx,cnt[i]);printf("%lld %lld",ans,ansx);
}

\(Luogu[TJOI2013]\)松鼠聚会

做法:将切比雪夫转曼哈顿,推公式,枚举聚会地点即可(当然还要排序

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{int f=1,w=0;char x=0;while(x<'0'||x>'9') {if(x=='-') f=-1; x=getchar();}while(x!=EOF&&x>='0'&&x<='9') {w=(w<<3)+(w<<1)+(x^48);x=getchar();}return w*f;
}
const int N=100010;
int n,x[N],y[N],ans=1LL<<62,Sx[N],Sy[N],px[N],py[N];
main(){
#ifndef ONLINE_JUDGE//freopen("A.in","r",stdin);//Ans=20freopen("B.in","r",stdin);//Ans=15
#endifn=read();for(int i=1,X,Y;i<=n;i++) X=read(),Y=read(),x[i]=px[i]=X+Y,y[i]=py[i]=X-Y;sort(x+1,x+n+1);sort(y+1,y+n+1);for(int i=1;i<=n;i++) Sx[i]=x[i]+Sx[i-1],Sy[i]=y[i]+Sy[i-1];for(int i=1;i<=n;i++){int sum=0,j=lower_bound(x+1,x+n+1,px[i])-x;sum+=j*px[i]-Sx[j]+Sx[n]-Sx[j]-(n-j)*px[i];j=lower_bound(y+1,y+n+1,py[i])-y;sum+=j*py[i]-Sy[j]+Sy[n]-Sy[j]-(n-j)*py[i];ans=min(ans,sum);}printf("%lld",ans/2);
}

转载于:https://www.cnblogs.com/wo-shi-zhen-de-cai/p/11184197.html

曼哈顿距离与切比雪夫距离的亲密♂关系。相关推荐

  1. 数据的距离度量 一、欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离

    数据的距离度量 一.欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离 前言 欧式距离 标准欧式距离 曼哈顿距离 闵氏距离 切比雪夫距离 兰氏距离 马氏距离 前言 本篇记录一下常用的数据 ...

  2. 曼哈顿距离和切比雪夫距离转换

    设平面空间内存在两点,它们的坐标为(x1,y1) (x2,y2) 曼哈顿距离 dis=|x1−x2|+|y1−y2|,即两点横纵坐标差之和. 切比雪夫距离 dis=max(|x1−x2|,|y1−y2 ...

  3. 曼哈顿距离与切比雪夫距离及其相互转化

    文章目录 曼哈顿距离与切比雪夫距离及其相互转化 1.算法分析 1.1 曼哈顿距离 1.2 切比雪夫距离 1.3 两者之间的关系 1.4 用处 2.典型例题 曼哈顿距离与切比雪夫距离及其相互转化 1.算 ...

  4. 三维马氏距离_各种距离(欧氏距离、曼哈顿距离、切比雪夫距离、马氏距离等)...

    引用:http://blog.csdn.net/shiwei408/article/details/7602324 在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurem ...

  5. 曼哈顿距离和切比雪夫距离

    转载 https://www.cnblogs.com/zwfymqz/p/8253530.html 本文只讨论二维空间中的曼哈顿距离与切比雪夫距离 曼哈顿距离 定义 设平面空间内存在两点,它们的坐标为 ...

  6. 曼哈顿距离和切比雪夫距离链接

    存一下链接慢慢看 曼哈顿距离和切比雪夫距离 这个更清晰一些: 关于曼哈顿距离和切比雪夫距离 NN中常用的距离计算公式:欧式距离.曼哈顿距离.马氏距离.余弦.汉明距离

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

    目录 曼哈顿距离与切比雪夫距离的相互转化 prufer序列 1. 曼哈顿距离 与 切比雪夫距离 的相互转化 曼哈顿距离 |x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1 ...

  8. ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli

    ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...

  9. 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“

    什么是范数,及其对应的 "曼哈顿距离"."欧式距离"."闵氏距离"."切比雪夫距离" 一.什么是范数 二.欧式距离(对应 ...

  10. 【计几】曼哈顿距离与切比雪夫距离

    讲解链接: 距离 OI Wiki 曼哈顿距离与切比雪夫距离:为何要相互转化 我们设 dM(A,B)d_M(A,B)dM​(A,B) 为点 AAA 和点 BBB 的曼哈顿距离, dQ(A,B)d_Q(A ...

最新文章

  1. 微信小程序——tab切换内容
  2. JavaScript|拖拽|仿Android手机九点连线开锁
  3. Cygwin简介及其下载安装卸载
  4. 项目spring boot 写es hbase 运行内存溢出
  5. php异步处理下载文件,异步处理Excel文件导入【流程图+PHP示例】
  6. Vue编写动态组件实践(render函数的使用心得)
  7. spring boot websocket 客户端_Spring Boot 开发集成 WebSocket,实现私有即时通信系统
  8. 在kali下对Windows 卷没有写权限的解决办法
  9. 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(下)
  10. 中文维基百科数据处理
  11. 腾讯实习生招聘之总体感悟
  12. 仿选单网图片合成小工具
  13. 模具毕业设计题目推荐 / 毕业设计(论文)说明书 CAD图纸 三维模型 开题报告 任务书 实习报告 答辩 ……
  14. Android RecyclerView设置paddingBottom,scrollbars跟随滑动到底部
  15. 服务器编译spark3.3.1源码支持CDH6.3.2
  16. 骆驼命名法,帕斯卡命名法与下划线命名法
  17. eBay领军计划嘉湖专场顺利落幕,万企孵化专项行动启幕在即!
  18. CMU硕士101-千奇百怪的排序算法
  19. CentOS7定时任务配置与使用
  20. 安卓开发规范-必读版

热门文章

  1. hbuilder + MUI 编写跨平台移动端app目前发现的优缺点
  2. [洛谷] P1097 [NOIP2007 提高组] 统计数字
  3. CTF-MISC基础-压缩包隐写总结
  4. 《微处理器体系结构》1.1 汇编语言与机器语言及应用
  5. 常用邮箱SMTP、POP3域名及其端口号
  6. 三极管原理及特性分析
  7. LPVOID 指针 转 int
  8. 计算机中所占百分数用哪个函数,Excel中Percentrank函数的使用-计算所占百分比
  9. SpringMVC项目报错500的可能解决方法
  10. 解决:3Dmax 渲染后任意点击就卡住不能点击,UI界面冻结