Algorithm 开始比赛的最短时间
在一个拥有M辆自行车的城市(形状为网格)中有N名自行车手。所有的车手都想参加比赛,但只有K车手可以参加比赛 为了尽可能缩短比赛开始的时间,骑手们为了让自行车在城市中传播开来而采取行动,以便在最短的时间内获得第一批K辆自行车 每个骑自行车的人都以单位速度移动,只有一个骑自行车的人才能获得一辆自行车。骑自行车的人可以向任何方向前进。自行车和骑自行车的人之间的距离是欧几里得距离 尽快开始比赛所需时间的平方是多少? 示例:假设我们有N=3,这意味着有3名自行车手,假设M=3,这意味着有3辆自行车是他们的,假设K=2,这意味着我们只需要2名自行车手参加比赛 自行车手的坐标为:(0,1)、(0,2)、(0,3) 自行车的坐标为:(100,1)、(200,2)、(300,3) 那么这里的答案是400,因为比赛需要两名自行车手。第一个自行车手(0,1)将能够在100个时间单位内到达第一辆自行车(100,1)。第二辆自行车(0,2)将能够在200个时间单位内到达第二辆自行车(200,2)。这是最理想的解决方案,需要200个时间单位。因此,输出将为200^2=40000 有助于解决这个问题吗Algorithm 开始比赛的最短时间,algorithm,graph-theory,Algorithm,Graph Theory,在一个拥有M辆自行车的城市(形状为网格)中有N名自行车手。所有的车手都想参加比赛,但只有K车手可以参加比赛 为了尽可能缩短比赛开始的时间,骑手们为了让自行车在城市中传播开来而采取行动,以便在最短的时间内获得第一批K辆自行车 每个骑自行车的人都以单位速度移动,只有一个骑自行车的人才能获得一辆自行车。骑自行车的人可以向任何方向前进。自行车和骑自行车的人之间的距离是欧几里得距离 尽快开始比赛所需时间的平方是多少? 示例:假设我们有N=3,这意味着有3名自行车手,假设M=3,这意味着有3辆自行车是他们的
约束条件是:N,M写下自行车和骑车人之间的M*N边。开始一个接一个地扔掉它们,从最长到最短,当连接特定自行车(或骑车人)的最后一条边被扔掉时,也将该自行车(或骑车人)扔掉。当你不能再将K辆自行车与K辆自行车配对时停止。(这可以通过在每个步骤运行来测试)
丢弃的最后一条边(其长度平方)就是您的答案。是否有任何特殊要求,或者您是否在寻找暴力解决方案?不管怎样,到目前为止,你尝试过哪些方法?你所说的边缘是什么意思?你能为你的算法提供一些伪代码吗?此外,你如何确保一辆自行车只被一个骑车人获得?通过扔掉X,我的意思是:在步骤N中,你有一个包含
X
的集合S
,在步骤N+1中,将其替换为集合S'=S\\{X}
。我认为你应该自己尝试提出一个实现。你的算法的复杂性如何?虽然我没有完全理解它。(第二个问题可能是个问题,让我想一想。