1 条题解
-
0
题解
非常抱歉,我不知道默认显示的是英文题面,上面可以换语言应该没人看不到吧(
令 表示区间 中在数组中缺失的整数个数,令 表示数组中等于 的元素个数。
为了使 ,必须满足以下条件:
- 区间 中的每个数都出现,这需要进行 次操作来补全;
- 数字 不得出现在数组中,因此需要进行 次操作来删除这些元素。
在删除值为 的元素时,我们可以直接用缺失的数来替换它们,因此总的最小操作次数是这两个值中的较大者。
因此,答案为:
时间复杂度为 。
Code:
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin >> t; while(t--){ int n, k; cin >> n >> k; vector<int> arr(n+1); vector<int> cnt(n+1,0); for (int i = 1;i<=n;i++){ cin >> arr[i]; cnt[arr[i]]++; } int op = 0; for (int i = 0;i<k;i++){ if (cnt[i]==0){ op++; } } if (n==k) cout << op<<endl; else cout << max(cnt[k],op)<<endl; } return 0; }
- 1
信息
- ID
- 1105
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 104
- 已通过
- 23
- 上传者