减少故障数量

时间:2019-06-30 08:48:20

标签: algorithm

我得到了一组01作为输入。 0表示失败,而1表示测试中学生的成功。现在,主要考试机构可以从该数组中选取任何连续的学生序列,并查看通过或未通过测试的学生人数。如果

#0 > #1 + k       -(1)

已知k(输入参数)的情况下,学校的注册将终止。

学校显然不想要它。因此,我们必须将0更改为1,以便无论采用什么集合,条件(1)都不会成立。将第i个位置的0更改为1会使学校2^i付出代价,我们必须使总成本最小化。如何在O(n)或(nlogn)时间中找到最低成本? (n =输入数组的长度)

示例:如果学生人数为4,则可能的集合为:

{1、2、3、4、12、23、34、123、234、1234}

如果输入为00000且k = 2,我们可以将其更改为10100,从而使成本仅为10。

如果输入为0110且k = 0,则必须将其更改为1111,从而使成本为18。

如果输入为0110且k = 1,则无需更改任何内容。因此,成本= 0。

0 个答案:

没有答案