有关如何根据给定条件找到标记给定数组的所有元素的最小步骤数的任何提示吗?

2024-04-18

两个整数N<=10^5 and K<=N给出,其中N是数组的大小A[] and K是我们在过程中可以选择的连续子序列的长度。每个元素A[i]<=10^9。现在假设最初数组的所有元素都未标记。在每一步中,我们将选择任意长度的子序列K如果这个子序列有未标记的元素,那么我们将标记所有在序列中最小的未标记元素。现在如何计算标记所有元素的最小步骤数?

为了更好地理解问题,请参阅这个例子——

N=5 K=3 A[]=40 30 40 30 40

步骤 1 - 选择区间 [1,3] 并标记 A[1] 和 A[3]

Step2-选择区间[0,2]并标记A[0]和A[2]

步骤 3 - 选择区间 [2,4] 并标记 A[4]

因此这里的最小步骤数是 3。

我的方法(速度不够快,无法通过)-

我从数组的第一个元素开始,并标记所有未标记的元素在距离上等于它<=K并递增steps by 1.


首先考虑一下你会如何回答这个问题K == N(即对子序列的长度没有任何有效的限制)。您的答案应该是最小步数是数组中不同值的数量。

然后考虑如何改变K减少;重要的是有多少个副本K- 覆盖选择集所需的长度间隔{i: A[i] == n}对于每个值n存在于A。简单的步行算法K-沿长度间隔A,在每个位置停下来A[i]尚未涵盖该值n是完全足够的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有关如何根据给定条件找到标记给定数组的所有元素的最小步骤数的任何提示吗? 的相关文章

随机推荐