曼哈顿距离
来源:互联网 发布:Java 获取项目发布路径 编辑:程序博客网 时间:2024/04/30 22:27
切雪儿距离距离是什么?
走过象棋的人就知道。
这个距离其实就是max(x[i]-x[j],y[i]-y[j]);
就是两个点之间的垂直距离和水平距离之间的最大的那个;这个就是象棋里边的国王和王后走的最短路;
还有一个欧式距离,别人称之为欧几里得距离,也就是我们初中高中学习的两点之间的直线距离,sqrt((x1-y1)^2+(x2-y2)^2);
三维的就是sqrt((x1-y1)^2+(x2-y2)^2+(x3-y3)^2);
当然,四维多维的都可以这样去写;
现在我主要讲的是曼哈顿距离,就是两点之间的垂直距离+水平距离;
讲个故事吧,有一位老司机,开着出租车,从A到达B,
A---------------\
\
\
B
就这样从A到B的最短距离就是水平距离加上垂直距离;
下边来看个例题:
hdu 4311
这道题就是在n个点里边找一个点,使得所有其他的点到达这个点距离距离之和的最小值;
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef struct distance{
long long x,y;
int id;
}dd;
dd a[100005],f[100005];
bool cmp_x(const dd a,const dd b){
return a.x<b.x;
}
bool cmp_y(const dd a,const dd b){
return a.y<b.y;
}
int T,n;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].id=i;
}
sort(a+1,a+1+n,cmp_y);
long long sum=0;
for(int i=2;i<=n;i++){
sum+=a[i].y-a[1].y;
}
f[a[1].id].y=sum;
for(int i=2;i<n;i++){
sum+=(2*i-2-n)*(a[i].y-a[i-1].y);
f[a[i].id].y=sum;
}
sum+=(n-1)*(a[n].y-a[n-1].y);
f[a[n].id].y=sum;
//
sum=0;
sort(a+1,a+1+n,cmp_x);
for(int i=2;i<=n;i++){
sum+=a[i].x-a[1].x;
}
f[a[1].id].x=sum;
// for(int i=2;i<n;i++){//也可以这样写
// sum+=(2*i-2-n)*(a[i].x-a[i-1].x);
// f[a[i].id].x=sum;
// }
// sum+=(n-1)*(a[n].x-a[n-1].x);
// f[a[n].id].x=sum;
for(int i=2;i<=n;i++){
sum+=(i-1)*(a[i].x-a[i-1].x);
if(i!=n)sum-=(n-i+1)*(a[i].x-a[i-1].x);
f[a[i].id].x=sum;
}
//
// for(int i=1;i<=n;i++)cout<<f[a[i].id].x<<":"<<f[a[i].id].y<<endl;
// cout<<"-------------"<<endl;
//
long long minn=f[a[1].id].x+f[a[1].id].y;
for(int i=2;i<=n;i++)
minn=min(minn,f[a[i].id].x+f[a[i].id].y);
printf("%lld\n",minn);
}
}
- 曼哈顿距离
- 曼哈顿距离
- 曼哈顿距离
- 曼哈顿距离
- 曼哈顿距离
- 最远(近)曼哈顿距离
- 模版-最长曼哈顿距离
- ]Requirements[最远曼哈顿距离]
- 最远曼哈顿距离
- hdu4311 曼哈顿距离
- BZOJ3210【曼哈顿距离】
- zoj2688 Requirements 曼哈顿距离
- poj2926Requirements (曼哈顿距离)
- 2015蓝桥杯 曼哈顿距离
- 蓝桥杯 曼哈顿距离
- hdu5762曼哈顿距离
- hdu5762Teacher Bo+曼哈顿距离
- HDU 5762:曼哈顿距离
- bitmap的createBitmap
- mybatis学习资源
- ztouch练习3
- STM32中malloc的使用失败处理方法
- Flask 快速入门
- 曼哈顿距离
- VS2013+opencv2.4.13测试surf特征匹配时报未定义标识符错误
- 自定义MapReduce的InputFormat,提取指定开始与结束限定符间的内容
- Android客制化------6.0底部导航栏增加隐藏按钮
- CSRF理解
- 按位运算的用途
- iOS 内购
- sed 命令
- android消息机制-handler