`
hengjie10
  • 浏览: 24185 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

邮局选址问题

 
阅读更多

问题描述:
在一个按照东西和南北方向划分成规整街区的城市里,n 个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y 坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。街区中任意2 点(x 1,y 1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y 1-y2|度量居民们希望在城市中选择建立邮局的最佳位置,使n 个居民点到邮局的距离总和最小。
编程任务:
给定n 个居民点的位置,编程计算n 个居民点到邮局的距离总和的最小值。
´数据输入:
第 1 行是居民点数n,1<n<=10000。接下来n 行是居民点的位置,每行2 个整数x 和y,- 10000<=x ,y <=10000。

结果输出:

n 个居民点到邮局的距离总和的最小值。

例如
输入 输出

5 10

1 2

2 2

1 3

3 -2

3 3

解题思路:

因为街区中任意2 点(x 1,y 1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y 1-y2|度量所以我们可以将任意2点的距离可以看作为x坐标上的距离|x1-x2|和y坐标的距离|y 1-y2|之和。这样我们容易想到输油管道问题那个题目(我博客的第一篇文章),所以我们可以将这个2维的题目拆分为2个一维然后将它们合并就行了。

一 找出x坐标(此时可忽略y坐标)的最优点 参考输油管道问题 可知最优点是中点,可以用 1.线性时间找中位数,2.先排序在找中位数 (因为输油管道问题是用的线性时间做的所以这个我贴的代码是用的排序)

二 找出y坐标(此时可忽略x坐标)的最优点 参考输油管道问题可知最优点是中点,可以用 1.线性时间找中位数,2.先排序在找中位数(因为输油管道问题是用的线性时间做的所以这个我贴的代码是用的排序)

三 合并 将x ,y坐标所求的距离和相加即是最有值。

#include<iostream>
#include<cmath>
using namespace std;
void Rs(int a[],int p,int r);
int pa(int a[],int p,int r);
int main()
{
int n;
int sum=0;
int x[1000];//x坐标
int y[1000];//y坐标
int dy;//y坐标中位数
int dx;//x坐标中位数
cin>>n;
for(int i=0;i<n;i++) cin>>x[i]>>y[i];
Rs(x,0,n-1);  
Rs(y,0,n-1);
dx=x[n/2];
dy=y[n/2];
for(i=0; i<n; i++) 
sum+=abs(x[i]-dx);//计算x坐标和
for(i=0; i<n; i++)
sum+=abs(y[i]-dy);//计算y坐标和
cout<<sum;
return 0;
}                                                                                                        
int pa(int a[],int p,int r)
{
int i=p,j=r+1;
int x=a[p];
	while(1)
	{
	while(a[++i]<x&&i<r);
	while(a[--j]>x);
	if(i>=j)	
	break;
	int tmp=a[i];	
	a[i]=a[j];
	a[j]=tmp;
	}
	a[p]=a[j];
	a[j]=x;
	return j;
}
void Rs(int a[],int p,int r)
{
if(p<r)
{
int q=pa(a,p,r);
Rs(a,p,q-1);
Rs(a,q+1,r);
}
}  


分享到:
评论

相关推荐

    算法小作业 邮局选址问题

    邮局选址问题是一种经典的组合优化问题,它在物流、设施规划和网络设计等领域有广泛应用。这个问题的基本假设是:有一系列的潜在邮局位置,每个位置都有一定的服务成本,目标是找到最少数量的邮局,使得所有居民点都...

    C++ 分治法解决邮局选址问题

    在这个特定的场景中,我们讨论的是如何使用C++来利用分治法解决邮局选址问题。邮局选址问题通常涉及到在一系列候选地点中选择一部分,以最大化覆盖范围或最小化成本,它属于组合优化问题,常见于物流、设施规划等...

    基于C语言实现的邮局选址问题.7z_邮局选址问题_

    邮局选址问题是一种经典的组合优化问题,它在物流、设施规划、网络设计等多个领域有广泛应用。这个问题的目标是在一系列潜在的地点中选择一部分来设立邮局,使得所有居民到最近邮局的距离之和最小化,或者在某些情况...

    ACM 邮局选址问题

    ACM 邮局选址问题 能 accepted Description 问题描述: 在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由...

    C++编写的邮局选址问题

    邮局选址问题是一种经典的优化问题,它涉及到在一组候选地点中选择最优的邮局位置,以最小化所有客户的平均旅行距离或成本。这个问题在实际应用中广泛存在,比如设施布局、仓库选址、零售店分布等。C++作为一门强大...

    邮局选址问题-参考代码

    ### 邮局选址问题分析与解决方法 #### 一、问题背景 邮局选址问题是一种经典的优化问题,主要目标是在一个由多个居民点组成的区域内找到一个最优位置设立邮局,使得所有居民点到邮局的总距离最小。这个问题不仅在...

    北京工业大学 算法分析与设计 作业01 邮局选址问题 Java代码

    北京工业大学 算法分析与设计 作业01 邮局选址问题 编程语言:Java 问题描述:在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x坐标表示东西向,用y坐标表示南北向。各居民...

    邮局选址问题的算法结局

    ### 邮局选址问题的算法解决方案 #### 一、问题背景及定义 邮局选址问题是一个经典的优化问题,旨在找到一个位置,使得该位置到各个需求点(本例中的居民点)的距离之和最小。这个问题在实际生活中有着广泛的应用...

    邮局选址问题的c语言编程实现

    ### 邮局选址问题的C语言编程实现 #### 问题背景 在一个按照东西和南北方向划分成规整街区的城市里,有n个居民点散乱地分布在不同的街区中。用x坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)...

    邮局最佳选址问题分治算法python实现

    邮局最佳选址问题是一个经典的优化问题,涉及到地理位置的最优选择以最大化覆盖范围或最小化服务成本。在这个场景中,我们采用分治算法来解决。分治算法是一种将复杂问题分解为多个较小规模的子问题,然后逐个解决的...

    用c++编写邮局选址问题

    根据给定的信息,本文将对“用C++编写邮局选址问题”的代码进行解析,并从中提炼出相关的C++编程知识点。 ### 1. 邮局选址问题简介 邮局选址问题是设施选址问题的一种,其目标是确定一个或多个设施(如邮局)的...

    hutc-邮局选址问题-参考代码

    邮局选址问题不仅局限于邮政系统的实际应用,还可以扩展到更广泛的领域,例如: - 物流配送中心的选择 - 公共设施(如医院、学校)的最佳位置规划 - 交通站点(公交站、地铁站)的优化布局 通过对邮局选址问题的...

    suanfasheji.rar_选址_邮局选址问题

    邮局选址问题是一种典型的组合优化问题,它在物流、设施规划、交通网络设计等领域有广泛应用。在这个问题中,目标是确定最优的邮局位置,以最小化覆盖所有居民区的距离总和,从而提高服务效率并降低运营成本。下面将...

    邮局选址问题 源代码以及测试数据

    邮局选址问题是一种经典的组合优化问题,它在物流、设施规划、网络设计等多个领域有广泛应用。在这个问题中,目标是确定最优的邮局位置,以最小化所有居民到最近邮局的距离之和。这个问题通常被视为一个NP难问题,...

    邮局选址问题(java实现代码)

    根据提示信息输入要测试的数据文件的编号(1-5),数据文件中第一行为居民个数,后面的每行是居民...输入数据文件的编号后程序开始运行,依次输出排序后的x、y轴坐标及对应权值,最后输出满足距离最小条件的邮局位置。

    JAVA写的邮局选址问题程序源码

    邮局选址问题(Post Office Location Problem)是运筹学中的一个经典问题,它涉及到如何在一组潜在的地点中选择最优的几个位置来设立邮局,以最大限度地覆盖服务区域或最小化运营成本。在这个问题中,通常假设每个...

    动态规划之邮局选址

    邮局选址问题通常涉及到地理信息、人口分布、交通条件等多方面因素。 在邮局选址问题中,我们首先需要理解问题的基本框架。假设我们有一个区域,其中包含多个可能的邮局选址点。每个点都有一定的服务范围和设立邮局...

    邮局选址代码及详细分析

    邮局选址问题是一个经典的计算机科学优化问题,常见于算法竞赛如ACM(国际大学生程序设计竞赛)中。这个问题的核心是寻找最优的邮局位置,使得所有居民点到邮局的距离之和最小。在这个问题中,我们需要理解并运用...

    邮局选址(分治).zip

    邮局选址问题是一个经典的组合优化问题,通常出现在物流、设施规划等领域。在这个问题中,我们需要在给定的地理位置中选择一部分作为邮局的站点,目标是最大化覆盖的居民数量或最小化服务成本。分治算法是一种高效的...

Global site tag (gtag.js) - Google Analytics