NYOJ 7-街区最短路径问题(曼哈顿距离)

原创 2015年07月09日 17:09:21

题目地址:NYOJ 7

曼哈顿距离:两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离。

思路:因为只能东西和南北方向走,所以先把南北(X)和东西(Y)方向的坐标分开,分别求它们的最值,然后相加即可。分析可以得知,邮局的所建点必须在居民点上,要不然所得的值总会比最小值多出一部分来。知道这个然后让我们来分析:假设在坐标轴X上有n个点,是从1到n,我们所求的目标点在x上,先求点1和n到x的距离只和,很显然x点在1到n之间,然后再求2和n-1到x的距离之和,很显然x点在2和n-1之间,如此重复下去,x的范围不断减小,最后成为中位点。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=21010;
int main() {
    int n,m,i,j;
    int sum;
    int x[30],y[30];
    scanf("%d",&n);
    while(n--) {
        memset(x,0,sizeof(x));
        memset(y,0,sizeof(y));
        sum=0;
        scanf("%d",&m);
        for(i=0; i<m; i++)
            scanf("%d %d",&x[i],&y[i]);
        sort(x,x+m);
        sort(y,y+m);
        for(i=0; i<m/2; i++) {
            sum+=(x[m-i-1]-x[i])+(y[m-i-1]-y[i]);
        }
        printf("%d\n",sum);
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

街区最短路径问题 7 (数学 曼哈顿距离)

街区最短路径问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的...

开开心心学算法--街区最短路径问题的二种解法

时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的...

acm 街区最短路径问题

一开始刚刚看到题目的时候,一脸懵逼。把题目想得非常复杂。还向朋友请教了一下算法的问题觉得直接计算x和y,还是很困难的。 然后上网上看了一下别人家的分析,才恍然大悟,是分别找XY的中位数。 代码过程...

!HDU 4311 最小曼哈顿距离-思维&卡时间-(横纵坐标分开算,排序)

题意:有n个点,求以这n个点中的某一点为起点,到各点的曼哈顿距离和最小是多少 分析: 暴力枚举又要超时,这种题一般都是考思维了,多半都是用技巧找到一个高效的方法。个人觉得这题跟上一篇文章的题是一个类型...

街区最短路径问题--所谓的曼哈顿距离,不是很懂

街区最短路径问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街...

欧几里得距离、曼哈顿距离和切比雪夫距离

1.      欧几里得距离、曼哈顿距离和切比雪夫距离 1.1      欧几里得距离:两个点之间的距离,也即通常情况下,我们所计算的距离,n维空间中的欧式距离的计算公式为: 1.2      曼...

某个点到其他点的曼哈顿距离之和最小(HDU4311)

Meeting point-1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

曼哈顿距离最小生成树与莫队算法

一、曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下: 给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价。 朴素的算法可以用O(N2)的Prim,或...
  • huzecong
  • huzecong
  • 2013年02月08日 15:46
  • 10227

Theta*: 连续环境下平滑的任意角度的路径规划

此文翻译自这篇文章Theta*: Any-Angle PathPlanning for Smoother Trajectories in Continuous Environments,简单介绍了T...

关于寻路算法的一些思考(4):A* 算法的变体

 定向搜索 在A*算法的循环中,OPEN集合用来保存所有用于寻找路径的被搜索节点。定向搜索是在A*算法基础上,通过对OPEN集合大小设置约束条件而得到的变体算法。当集合太大的时候,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NYOJ 7-街区最短路径问题(曼哈顿距离)
举报原因:
原因补充:

(最多只允许输入30个字)