CF #358 B. Alyona and Mex
传送门:http://codeforces.com/contest/682/problem/B
题目大意
给定一个长度为n的数组a[],对于每个a[i]可以将其变成1~a[i]的一个数,要是这个数组中没有出现的最小数字最大,求这个没有出现的最小数。
题解
Orz 感觉就是模拟啊。排序,从1开始往后试,对于X看看有没有数字等于X或者大于X,如果有则尝试X+1,否则就是答案。
程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include #include using namespace std; const int Maxn=100000; int n; int num[Maxn+5]; int Ans=0; bool cmp(int a,int b){ if (a<b) return true; return false; } int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&num[i]); sort(num+1,num+n+1,cmp); for (int i=1;i<=n;i++){ if (num[i]>Ans){ Ans++; } } printf("%d\n",Ans+1); return 0; } |

原文链接:CF #358 B. Alyona and Mex
WNJXYKの博客 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!