关键结论:对前缀 a1,…,ai 的元素集合 Si,令
因为 m 必须满足 m≥Mi,且集合中所有元素都不超过 m,所以在任意 m≥Mi 下,已有的属于 1..m 的不同元素个数就是 Di。要补全为 1..m 的排列,需要插入的数量为 m−Di。当取最小可行的 m=Mi 时插入数最少。
因而答案为:
游游有一个原始排列,但部分元素丢失,剩余元素形成长度为 n 的数组{a1,a2,…,an}。
对于每个 1≤i≤n ,将前缀 {a1,a2,…,ai} 看作新的数组,要把它补全成一个排列,至少需要插入多少个元素?换句话说,对于每个 1≤i≤n ,考虑由前缀 a1,a2,…,ai 构成的元素集合。要将这个集合补全为一个长度为 m 的排列 (即包含 1,2,…,m ), m 的值必须不小于该集合中的任何元素)。为了使插入的元素数量最少,你需要选择一个最优的 m 。请问在这种最优选择下,至少需要插入多少个元素?
请输出每个前缀所需插入的最少元素数。
【名词解释】
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写