C 关于如何根据给定条件找到标记给定数组中所有元素的最小步骤数,有什么提示吗? 两个整数 n> p>首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何随着 K < /代码>的变化而减少的;重要的是,对于a中存在的每个值n,需要覆盖选择集{i:a[i]==n}的K长度间隔的副本数。沿着a的K长度间隔行走,在a[i]的每个位置停下来,而n的值尚未涵盖,这种天真的算法是完全足够的。

C 关于如何根据给定条件找到标记给定数组中所有元素的最小步骤数,有什么提示吗? 两个整数 n> p>首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何随着 K < /代码>的变化而减少的;重要的是,对于a中存在的每个值n,需要覆盖选择集{i:a[i]==n}的K长度间隔的副本数。沿着a的K长度间隔行走,在a[i]的每个位置停下来,而n的值尚未涵盖,这种天真的算法是完全足够的。,c,algorithm,C,Algorithm,正如我们看到的最小步数=n/K或n/K+1,最大步数=(n+K-1)。 我们必须优化步骤的总数,这取决于我们过去所做选择的历史记录,即动态解决方案 有关动力学理论教程,请参见可在O(n)中求解,如下所示: 微量元素a[i]。如果之前没有跟踪a[i],则映射该数字及其索引和递增计数器。如果之前跟踪该数字,则检查其(最后一个索引-当前索引)>=K,如果是,则更新索引并递增计数。打印计数。 映射STL将是有益的。是的,但请帮助我找到一个快速解决方案。构造示例输入非常容易,因此步骤数将为N-1。为什么您

正如我们看到的最小步数=n/K或n/K+1,最大步数=(n+K-1)。 我们必须优化步骤的总数,这取决于我们过去所做选择的历史记录,即动态解决方案

有关动力学理论教程,请参见

可在O(n)中求解,如下所示: 微量元素a[i]。如果之前没有跟踪a[i],则映射该数字及其索引和递增计数器。如果之前跟踪该数字,则检查其(最后一个索引-当前索引)>=K,如果是,则更新索引并递增计数。打印计数。
映射STL将是有益的。

是的,但请帮助我找到一个快速解决方案。构造示例输入非常容易,因此步骤数将为N-1。为什么您希望能够找到更快的解决方案?@HighPerformanceMark how N-1?抱歉,我无法理解您的答案。你能再解释一下吗?@ HELDECODER孤立地考虑每一个不同的值<代码> V < /代码>。检查长度
K
的多少子序列,您需要用
A[i]==v
@danielfisher覆盖所有位置
i
,现在我知道了。:)