NYOJ-7街区最短问题
来源:互联网 发布:淘宝违规12分 编辑:程序博客网 时间:2024/05/22 14:16
街区最短路径问题
时间限制:3000 ms | 内存限制:65535 KB难度:4
描述
一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得各个住户到邮局的距离之和最少。求现在这个邮局应该建在那个地方使得所有住户距离之和最小;
输入
第一行一个整数n<20,表示有n组测试数据,下面是n组数据;每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户所在街区的坐标。m行后是新一组的数据;
输出
每组数据输出到邮局最小的距离和,回车结束;
样例输入
231 12 11 252 9 5 2011 91 11 20
样例输出
244
由于测试数据比较弱,刚开始直接暴力也能过。
#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<cmath>using namespace std;typedef struct node{ int x,y;}point;const int inf = 0x3f3f3f3f;const int maxn=105;int m;vector<point> ve;void init(){ ve.clear(); cin>>m; int x,y; for(int i=0;i<m;i++) { cin>>x>>y; point temp={y,x}; ve.push_back(temp); }}int solve(){ int ans=inf,sum; for(int i=1;i<100;i++) { for(int j=1;j<100;j++) { sum=0; for(int k=0;k<ve.size();k++) { sum+=(abs(ve[k].x-i)+abs(ve[k].y-j)); } ans=min(ans,sum); } } return ans;}int main(){ int t; cin>>t; while(t--) { init(); cout<<solve()<<endl; } return 0;}
法二:数学:在一维的数轴上,一点x到数轴上多点的距离和最小 = a[max]-a[0]+a[max-1]-a[0+1]+….直到max-n<=0+n;
/* 此题为数学类问题,目的是为了找一个点,使这个点到每条边的距离最短, 本题中,可以用一个简单地思路,分别把坐标x,y,分开, 那么这道题就简化为:在给定的m个点中,求每个点到x的距离的和的最小值, 即:min{∑|xi-x|},故本题的结果应该是:距离=min{∑|xi-x|}+min{∑|yi-y|}。 为了是问题更简化,可以先将x坐标y坐标分别按升序排序,然后用最后一个数减去第一个, 倒数第二个减去正数第二个......以此类推。(这样做的原因是,想要找出一点, 使该点到两个端点的距离的和最小,则这个点必落在两个端点之间。)*/#include<iostream>#include<cstring>#include<algorithm>using namespace std;int x[20],y[20];int main(){ int t; cin>>t; while(t--) { int m; cin>>m; for(int i=0;i<m;i++) cin>>x[i]>>y[i]; sort(x,x+m); sort(y,y+m); int ans=0; for(int i=m-1,j=0;i>j;i--,j++) //到 x点和的最短距离。 ans+=(x[i]-x[j]+y[i]-y[j]); cout<<ans<<endl; } return 0;}
阅读全文
0 0
- NYOJ-7:街区最短路径问题
- nyoj 7 街区最短路径问题
- NYOJ 7-街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj-7-街区最短路径问题
- 街区最短路径问题(nyoj 7)
- NYOJ 7 街区最短路径问题
- Nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- nyoj 7 街区最短路径问题
- NYoj 7街区最短路径问题
- NYOJ 7 街区最短路径问题
- NYOJ 7 街区最短路径问题
- Java日记——获取内部类的几种方式
- 实例探索Java模式之路——建造模式
- 利用jquery.form.js的ajaxSubmit实现不跳转提交表单数据
- 移动端返回上一页,刚需!document.referrer 详解
- 单例模式singleton —— I
- NYOJ-7街区最短问题
- 利用pushState开发无刷页面切换
- [P1290]欧几里德的游戏
- JAVA高级工程师课程笔记整理——(五)XML解析
- SOAP webserivce 和 RESTful webservice 对比及区别
- html基本基础——图片元素&表单元素
- Hadoop Hive sql语法详解1-认识hive及DDL操作
- [P1082] 同余方程
- Eclipse中配置Python开发环境