0

可能重复:
数组中值变换最小步骤

正如标题所说,我们需要用数组中的最大元素替换它的所有元素。但是我们可以应用的唯一操作是:

给定大小为 n 的数组 A,当它按升序排序时,它的中位数是索引为 [n/2]+1 的元素。我们可以应用的唯一操作是任何连续的子数组 B[l...r] l>=1 和 r<=n(基于 1 的索引)并将其所有元素替换为其中位数。

我们需要确定可以将给定数组中的所有元素转换为数组中的最大元素的最小操作数。

我无法找到解决这个问题的方法..我理解的唯一一点是,如果数组包含最大元素 m 次,那么通过上述操作,我们最多只能用它替换 m 个元素。当最大元素变为 >=n/2 那么我们只需要一次操作。

例如,如果给定 A 为 1 2 3,那么首先我们可以取中位数为 3 的子数组 2 3,因此我们的数组变为 1 3 3 现在取大小为 3 的子数组,我们得到的答案是 3 3 3。

4

0 回答 0