SPOJ-侵略性母牛,“最大最小距离”术语的含义是什么?

时间:2018-11-20 11:23:30

标签: c arrays binary-search

我试图了解Spoj中AGGRCOW - Aggressive cows的问题。但是输出结果如何,我不明白。首先,我想也许他们之间的距离就像这样输入:

Input:
5 3 
1 2 4 8 9
     

输出:3

首先,将cow1放置在arr [0]位置,然后将cow2放置在arr [2]。我们不会将cow2放在arr 1中,因为这样它们之间就不会有距离(2-1 = 1)。 cow2和cow1的距离现在为3个单位。因此,我们将cow2放在了arr [2]中。最后,将Cow3放到arr [3]中,因为cow3和cow2之间的距离在这里4。然后我们比较3 <4。输出3。

但是当我尝试为该输入应用相同的逻辑时

Input:
6 3 
2 3 4 5 8 9
     

输出:3

按照我的逻辑,应该为2。就像将cow1保留在arr [0]中,而将cow2保留在arr [2]中一样,距离为4-2 = 2。这是最低要求。但是当我想通过谷歌搜索看到实际值是多少时,我发现它是3。我不知道它是3。为什么不是2?我只想解释这个问题,而不是代码。

3 个答案:

答案 0 :(得分:1)

问题是给您 N 个档位, a 0 a < i> N -1 。您必须填充其中的 C ,但要确保填充的档位号之间的距离尽可能高。输出是所有已填充摊位所实现的分隔。也就是说,如果您输出3,则意味着您的解决方案会显示“我可以填充摊位,以便任何两个填充摊位之间的距离至少为3”。

如果您考虑一下,您实际上是在查看任何两个填充摊位之间的最小距离,并且在不影响与其他填充摊位之间的距离的情况下,尝试将其最大化。因此:最大最小距离。

输入的格式为

  

N C
   a 0 a 1 ... a N -2 a N -1

第二个例子是

6 3 
2 3 4 5 8 9

表示有6个档位:2、3、4、5、8和9,需要填充其中三个,以保持档位号之间的最大间隔。

最佳解决方案是使用档位2、5和9。然后分隔为5-2 = 3和9-5 = 4,结果是其中最小的3。

答案 1 :(得分:0)

在6 3、2 3 4 5 8 9的情况下,可以将母牛放进2、5和8中,从而产生最小距离3。最小距离大于2,因此2不是最大距离最小可能。

答案 2 :(得分:0)

  

为防止奶牛相互伤害,FJ希望将奶牛分配给摊位,以使它们之间的最小距离尽可能大。

FJ必须使母牛之间的距离尽可能远-在该设置中,两头母牛/失速位置之间的距离是最大的最小距离。

在给定的档位位置和给定的奶牛数量下,您必须选择档位位置,以使所有的奶牛都被安置在彼此最远离的档位中(最小距离是两个档位之间的距离您分配给定母牛的位置)。该设置中两个最近的档位之间的距离是最大的最小距离。