UVA206 Meals on Wheels Routing System
题目描述
"Meals on Wheels"机构决定为本市市民送外卖。
为了节省时间,让饭菜始终是热的,此机构设计了一种算法来为顾客的地址排序,再把订单分配给外卖小哥。
把整个城市看做一个平面直角坐标系,机构总部在原点(0,0),每个顾客的地址用(x,y)表示,x轴正半轴为东,负半轴为西,y轴正半轴为北,负半轴为南。
你现在需要编写一个程序,输入每天的司机数量(其实就是路线数)和每个顾客的情况(名字与坐标),然后以以下规则安排路线:
1.计算出每个顾客的极坐标,其中正东方向为0∘,正北方向为90∘.
2.按照角度排递增序,然后尽可能平均地分配路线。
3.角度高的路线数不应该比角度低的路线数多。(其实就是路线数也要从小往大递增)
4.如果两个顾客极坐标的角度相同,那么按照距离排序。
5.任一两条路线的顾客差不得超过1。
你的程序不仅要确定路线的安排方案,还要计算出每条路线的长度。这里的长度包括机构总部到顾客家的距离,后续顾客家之间的距离,和最后返回总部的距离。
距离都以曼哈顿距离计算。
输入格式
本题多测。
第一行是一个字符串,代表数据的ID(其实没啥用)。
第二行是两个数n,m,代表路径数与顾客数。
接下来2m行是顾客信息,分别是一个长度为sss的字符串(名字)和坐标(x,y)。
输入文件以EOF结束,保证合法。
输出格式
输出数据包含数据ID,顾客数量和路线数量,路线ID,分别送到的顾客姓名,路线长度和路线总长度。
(其实看样例更好理解)
说明/提示
1≤ID.length≤50
1≤s≤25
/什么?n和m?抱歉,翻译者也没找到。(逃
Translater:@Luisvacson