[ABC290C] Max MEX 题解
xuhanxi_dada117
·
·
题解
题目传送门
题目大意
给你一个数组,要求你从中选 k 个数,使他们的 MEX 最大。
# 题目解法
考虑贪心:
如果有 $0$ 那么一定选(不选 $Ans=0$ , 选了还能更大。)
同理:有 $1$ 就要 $1$ ...
直到 $k$ 个数完了或没有下一个了:直接输出答案即可。
判断数字在不在:可以使用 $\ $ ```map``` $\ $。
总复杂度 $\Theta(nlogm)$ $m$ 为值域。
# 代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,k,a[500010];
map<int,bool> mp;
signed main(){
cin>>n>>k;
for(int i=1;i<=n;++i) cin>>a[i],mp[a[i]]=true;
for(int i=0;i<k;++i){
if(!mp[i]){
cout<<i;return 0;
}
}cout<<k;
return 0;
}
```
[Accept!](https://www.luogu.com.cn/record/102670395)