街区最短路径问题
2016-02-02 21:16
267 查看
街区最短路径问题
街区最短路径问题描述
mycode
描述
一个街区有很多住户,街区的街道只能为东西、南北两种方向。 住户只可以沿着街道行走。 各个街道之间的间隔相等。 用(x,y)来表示住户坐在的街区。 例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。 现在要建一个邮局,使得各个住户到邮局的距离之和最少。 求现在这个邮局应该建在那个地方使得所有住户距离之和最小;
输入
第一行一个整数n<20,表示有n组测试数据,下面是n组数据; 每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户所在街区的坐标。 m行后是新一组的数据;
样例输入
2 3 1 1 2 1 1 2 5 2 9 5 20 11 9 1 1 1 20
样例输出
2 44
##分析
邮局坐标(a,b),用户有n家,坐标一次为(X1,Y1)到(Xn,Yn)。题目要求min(∑|xi-a|)+min(∑|yi-b|;)
我们不妨把两个式子单独来看。例如只看min(∑|xi-a|),就相当于求一条直线上点a到剩余点X1~Xn最小距离。
于是我们将X1~Xn排序,当a点在数量平分X1~Xn时,有最小值。
mycode
#include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; int path(vector<int> & vc){ vector<int>::iterator begin; vector<int>::iterator end; begin = vc.begin(); end = vc.end()-1; int sum = 0; while(begin < end){ sum += *end - *begin; begin++; end--; } return sum; } int main(){ int n; cin >> n; while(n--){ vector<int> hang; vector<int> lie; int m; cin >> m; int x,y; for(int i = 0; i < m; ++i){ cin >> x >> y; hang.push_back(x); lie.push_back(y); } //排序 sort(hang.begin(),hang.end()); sort(lie.begin(),lie.end()); // print(lie); // print(hang); int sum = 0; sum += path(hang); sum += path(lie); cout << sum << endl; } }
别人写的代码
#include<iostream> #include<algorithm> using namespace std; int x[30],y[30],n,m,i;; int main() { cin>>n; while(n--) { cin>>m; for(i=0;i<m;i++) cin>>x[i]>>y[i]; sort(x,x+m); sort(y,y+m); int sum=0; for(i=0;i<m/2;i++) sum+=x[m-1-i]-x[i]+y[m-1-i]-y[i];//这一句话值得我学习。 cout<<sum<<endl; } return 0; }
相关文章推荐
- Linux下XWindow图形界面的基本概念
- 什么是Mac OS X?跟Linux有什么区别
- clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
- AJAX 请求区分 $_SERVER['HTTP_X_REQUESTED_WITH'] 小解
- FreeBSD5.4Release X Windows 安装笔记 (Freebsd5.4R+Gnome2.10.0)
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)
- OS X Mavericks 10.9.2 Retail VMware Image
- Mac OS X 背后的故事(二)——Linus Torvalds的短视
- Mac OS X 背后的故事(四)—— 政客的跨界
- 从进程PID查找X Window ID
- xz
- Mac os 10.9开发环境搭建
- Fedora安装 win7 32b 安装fedora x64 dvd
- Centos最小安装,客户端如果实现支持GUI!
- Wayland:Linux的新X Server
- VMware® Workstation 11 解锁 unlocker202 Mac OS X
- IBM X系列资料收集
- OS X 键盘快捷键
- mac 10.11 安装mysql5.7.10压缩版
- OS X Yosemite 10.10. 自带PHP环境gd库扩展缺少freetype 解决办法