无法理解贪婪算法中的一个Top Coder条目

时间:2011-07-13 06:08:39

标签: algorithm greedy

我实际上正在练习贪婪算法,并且topcoder有问题。所以需要一些帮助......

问题在于强大的计算机系统.. http://www.topcoder.com/stat?c=problem_statement&pm=2235&rd=5070

我不明白什么是MFC。 (最大失败次数)?

如果有人可以通过简单的例子说明MFC的解释,那么这将有所帮助!

谢谢..

如果您没有帐户,并且无法关注该链接,请注意以下问题:

  

在强大的计算机系统中,最重要的部分之一是冷却。如果没有适当的冷却,处理器可以加热到400摄氏度以上。系统的可靠性可以通过确定有多少风扇可以在不冒系统处理器风险的情况下发生故障来测量。可以为每个风扇分配一个值,指示它为系统冷却的容量,并且我们可以定义最小冷却容量,风扇容量的总和必须超过该容量才能正确冷却系统。我们将故障集定义为一组不需要冷却系统的风扇。换句话说,如果故障组中的风扇损坏,系统仍然可以被其余风扇正确冷却。失败设置的计数是集合中的风扇数量。

     

为了测量可靠性,我们将定义两个值,最大故障集(MFS)和最大故障计数(MFC)。 MFS是一组具有最大计数的粉丝。一组粉丝可能有多个MFS(见下文)。当且仅当没有具有更高计数的故障集时,故障集才是MFS。 MFC是最大值,因此所有具有计数< = MFC的风扇组都是故障集。换句话说,MFC或更小尺寸的任何一组风扇都可能发生故障,剩下的风扇仍然会对系统进行适当的冷却。

     

考虑风扇设置容量为1,2,3,冷却要求为2.存在两个MFS,数量为2:风扇1和3,或风扇1和2.但是,MFC不是2,因为风扇2和3不是故障设置(风扇1无法自行冷却系统)。因此,MFC为1,因为如果任何一个风扇出现故障,系统仍然可以冷却。

     

您将获得一个int []容量,它指定每个风扇提供多少冷却单位,以及一个int minCooling,它指定冷却系统所需的最小冷却单位。您的方法应该返回一个int [],其中第一个值应该是最大失败集(MFS)中的风扇数,第二个值应该是最大失败计数(MFC)。

2 个答案:

答案 0 :(得分:1)

  

我们将故障集定义为一组不需要冷却系统的风扇。换句话说,如果故障组中的风扇损坏,系统仍然可以被其余风扇正确冷却。失败设置的计数是集合中的风扇数量。

     

当且仅当没有具有更高计数的故障集时,故障集才是MFS。

一切都在问题陈述中。什么不清楚?

答案 1 :(得分:0)

就像在问题陈述中一样:

The MFC is the largest value such that all fan sets with count <= MFC are Failure Sets. In other words, any set of fans of size MFC or less can fail, and the system will still be properly cooled by the remaining fans.

MFC意味着如果我们任意选择n&lt; = MFC风扇失败,那么系统仍然可以提供必要的冷却要求。但是,至少存在一种情况,如果我们选择MFC + 1个风扇使系统失效将无法满足所需的冷却要求。

TopCoder&amp;快乐学习!

扰流:

只需找到其容量总和大于(总容量 - 冷却要求)的风扇M的最小数量。这些风扇必须是最大的,因此贪婪的算法部分。 M - 1就是答案。