[ABC290C] Max MEX 题解

· · 题解

题目传送门

题目大意

给你一个数组,要求你从中选 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)