Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 开始比赛的最短时间_Algorithm_Graph Theory - Fatal编程技术网

Algorithm 开始比赛的最短时间

Algorithm 开始比赛的最短时间,algorithm,graph-theory,Algorithm,Graph Theory,在一个拥有M辆自行车的城市(形状为网格)中有N名自行车手。所有的车手都想参加比赛,但只有K车手可以参加比赛 为了尽可能缩短比赛开始的时间,骑手们为了让自行车在城市中传播开来而采取行动,以便在最短的时间内获得第一批K辆自行车 每个骑自行车的人都以单位速度移动,只有一个骑自行车的人才能获得一辆自行车。骑自行车的人可以向任何方向前进。自行车和骑自行车的人之间的距离是欧几里得距离 尽快开始比赛所需时间的平方是多少? 示例:假设我们有N=3,这意味着有3名自行车手,假设M=3,这意味着有3辆自行车是他们的

在一个拥有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

有助于解决这个问题吗


约束条件是:N,M写下自行车和骑车人之间的M*N边。开始一个接一个地扔掉它们,从最长到最短,当连接特定自行车(或骑车人)的最后一条边被扔掉时,也将该自行车(或骑车人)扔掉。当你不能再将K辆自行车与K辆自行车配对时停止。(这可以通过在每个步骤运行来测试)


丢弃的最后一条边(其长度平方)就是您的答案。

是否有任何特殊要求,或者您是否在寻找暴力解决方案?不管怎样,到目前为止,你尝试过哪些方法?你所说的边缘是什么意思?你能为你的算法提供一些伪代码吗?此外,你如何确保一辆自行车只被一个骑车人获得?通过扔掉X,我的意思是:在步骤N中,你有一个包含
X
的集合
S
,在步骤N+1中,将其替换为集合
S'=S\\{X}
。我认为你应该自己尝试提出一个实现。你的算法的复杂性如何?虽然我没有完全理解它。(第二个问题可能是个问题,让我想一想。