一类最短距离问题

来源:互联网 发布:天龙八部 知乎 编辑:程序博客网 时间:2024/04/27 03:38

在一个纵横间距为1的网格地图上,有n个比赛选手,他们分别位于某个纵横交点(即x和y坐标都是1的整倍数),将参加一个循环赛(即任意两个选手之间都需要进行比赛),你是赛事的组织者,要结合选手的位置信息来设计一个最佳的比赛赛程,使得他们走的路程总和最少(注选手只能沿着网格线走,不能沿任何对角线穿越),选手一旦完成所有比赛后,可以任意选择行动或停在原地,不需要回到其原来位置。

 

比如:如果有选手A(0,0),B(0,2),C(2,0),D(1,1),E(2,2),则一个可能的最佳解为:A和B走到(0,1)比赛,C和E走到(2,1)比赛,然后ABCE都走到D处(1,1)比赛,进行剩余所有比赛,所有选手共走了8个单位的距离。

 

 

其实,题目示例本身带有一定的迷惑性,分析可知,如果让所有的比赛都在D处(1,1)进行,也能够得到同解,因为是循环赛,任意两个选手都需要碰面,早碰晚碰并没有关系,但是这个分析可以简化解题思路,即我们只需要找出这么一个点,使得所有选手到它的水平和垂直距离差之和最小。

 

第一想到的可能是重心点,即x=sum{x1,...,xn}/n, y=sum{y1,...yn}/n,改点坐标可能带小数,再测试该点周围的网格点取最小值,这个思路似乎也贴合示例题解,但是,取个任意的x坐标数组,假设为{1,2,3,9,10,100},重心x=20.83,它在10和100之间,但是换一个角度,如果将取值点前移一个小的delta,在它之前的m个点都缩进delta,在它之后的l各点则延伸delta,总共可以降低(l-m)*delta,扩展一点,如果左侧的点比右侧多,则继续向左移近对降低总距离有益,反正亦然(x坐标和y坐标都适用),所以重心点未必是最佳位置,合理的位置应该是有序坐标的中间点位置,如果数组个数为奇数,则取中间点;如果为偶数,则中间两个点任取一个都可以。

 

所以,比赛场次安排和比赛地点都是幌子,最后的解显得很简洁。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高低床踏板断了怎么办 高低床 孩子摔下来怎么办 小孩子太小高低床爬梯怎么办 辞职后单位不发工资怎么办 买了个上下床搬家怎么办 爸妈不让学日语怎么办 把共享单车弄坏了怎么办 裙子沾到单车油怎么办? 外穿的短裤卷边怎么办 蹬完单车膝盖疼怎么办 夏天骑摩托太热怎么办 半框眼镜线断了怎么办 镜片从镜框脱了怎么办 干活累的肩膀痛怎么办 干活累的肩膀疼怎么办 骑山地车手腕和脖子疼怎么办? 布艺沙发坐软了怎么办 篮球护臂太大了怎么办 豪爵摩托车没电怎么办 西装裤裤脚太宽怎么办 全棉衣服有异味怎么办 羊剪绒毛领褪色怎么办 篮球鞋买大2码怎么办 新鞋穿着脚累怎么办 买了国产乔丹怎么办 跑完1000米吐了怎么办 翻毛鞋脚染色了怎么办 翻毛皮被染色了怎么办 防鹿皮绒鞋染色怎么办 亚瑟士跑鞋挤脚怎么办 亚瑟士跑鞋很紧怎么办 飞线鞋面破了怎么办 新袜子穿了很滑怎么办 鞋底硬脚底板疼怎么办 新鞋前面太硬怎么办 新鞋子鞋底太硬怎么办 不到一米八的身高想扣篮怎么办 鞋胶粘在鞋面上怎么办 鞋子上沾了胶怎么办 休闲鞋号码大了半码怎么办 高跟鞋大了一码怎么办