曼哈顿距离与切比雪夫距离的亲密♂关系。
先来看一下曼哈顿距离和切比雪夫距离的定义。(以下我可能用\(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
曼哈顿距离与切比雪夫距离的亲密♂关系。相关推荐
- 数据的距离度量 一、欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离
数据的距离度量 一.欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离 前言 欧式距离 标准欧式距离 曼哈顿距离 闵氏距离 切比雪夫距离 兰氏距离 马氏距离 前言 本篇记录一下常用的数据 ...
- 曼哈顿距离和切比雪夫距离转换
设平面空间内存在两点,它们的坐标为(x1,y1) (x2,y2) 曼哈顿距离 dis=|x1−x2|+|y1−y2|,即两点横纵坐标差之和. 切比雪夫距离 dis=max(|x1−x2|,|y1−y2 ...
- 曼哈顿距离与切比雪夫距离及其相互转化
文章目录 曼哈顿距离与切比雪夫距离及其相互转化 1.算法分析 1.1 曼哈顿距离 1.2 切比雪夫距离 1.3 两者之间的关系 1.4 用处 2.典型例题 曼哈顿距离与切比雪夫距离及其相互转化 1.算 ...
- 三维马氏距离_各种距离(欧氏距离、曼哈顿距离、切比雪夫距离、马氏距离等)...
引用:http://blog.csdn.net/shiwei408/article/details/7602324 在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurem ...
- 曼哈顿距离和切比雪夫距离
转载 https://www.cnblogs.com/zwfymqz/p/8253530.html 本文只讨论二维空间中的曼哈顿距离与切比雪夫距离 曼哈顿距离 定义 设平面空间内存在两点,它们的坐标为 ...
- 曼哈顿距离和切比雪夫距离链接
存一下链接慢慢看 曼哈顿距离和切比雪夫距离 这个更清晰一些: 关于曼哈顿距离和切比雪夫距离 NN中常用的距离计算公式:欧式距离.曼哈顿距离.马氏距离.余弦.汉明距离
- 曼哈顿距离与切比雪夫距离的转化及prufer序列
目录 曼哈顿距离与切比雪夫距离的相互转化 prufer序列 1. 曼哈顿距离 与 切比雪夫距离 的相互转化 曼哈顿距离 |x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1 ...
- ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli
ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...
- 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“
什么是范数,及其对应的 "曼哈顿距离"."欧式距离"."闵氏距离"."切比雪夫距离" 一.什么是范数 二.欧式距离(对应 ...
- 【计几】曼哈顿距离与切比雪夫距离
讲解链接: 距离 OI Wiki 曼哈顿距离与切比雪夫距离:为何要相互转化 我们设 dM(A,B)d_M(A,B)dM(A,B) 为点 AAA 和点 BBB 的曼哈顿距离, dQ(A,B)d_Q(A ...
最新文章
- 微信小程序——tab切换内容
- JavaScript|拖拽|仿Android手机九点连线开锁
- Cygwin简介及其下载安装卸载
- 项目spring boot 写es hbase 运行内存溢出
- php异步处理下载文件,异步处理Excel文件导入【流程图+PHP示例】
- Vue编写动态组件实践(render函数的使用心得)
- spring boot websocket 客户端_Spring Boot 开发集成 WebSocket,实现私有即时通信系统
- 在kali下对Windows 卷没有写权限的解决办法
- 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(下)
- 中文维基百科数据处理
- 腾讯实习生招聘之总体感悟
- 仿选单网图片合成小工具
- 模具毕业设计题目推荐 / 毕业设计(论文)说明书 CAD图纸 三维模型 开题报告 任务书 实习报告 答辩 ……
- Android RecyclerView设置paddingBottom,scrollbars跟随滑动到底部
- 服务器编译spark3.3.1源码支持CDH6.3.2
- 骆驼命名法,帕斯卡命名法与下划线命名法
- eBay领军计划嘉湖专场顺利落幕,万企孵化专项行动启幕在即!
- CMU硕士101-千奇百怪的排序算法
- CentOS7定时任务配置与使用
- 安卓开发规范-必读版
热门文章
- hbuilder + MUI 编写跨平台移动端app目前发现的优缺点
- [洛谷] P1097 [NOIP2007 提高组] 统计数字
- CTF-MISC基础-压缩包隐写总结
- 《微处理器体系结构》1.1 汇编语言与机器语言及应用
- 常用邮箱SMTP、POP3域名及其端口号
- 三极管原理及特性分析
- LPVOID 指针 转 int
- 计算机中所占百分数用哪个函数,Excel中Percentrank函数的使用-计算所占百分比
- SpringMVC项目报错500的可能解决方法
- 解决:3Dmax 渲染后任意点击就卡住不能点击,UI界面冻结