【题目】

B. Appending Mex

【描述】

Ildar定义了一种方法,可以由一个数组产生一个数。具体地,从这个数组中任选一个子集,不在这个子集中的最小的非负整数称为mex,就是由这个数组得到的数。初始时刻Ildar的数组是一个空数组,通过上述方法得到某个mex,加入到数组的尾端,不断重复以上操作。现在给你一个n长的数组a,问Ildar能否得到这个数组,如果能则输出-1,否则输出最小的整数t,表示数组的前t个数中至少有一个数不能得到。

数据范围:1<=n<=100000,0<=a[i]<=10^9

【思路】

要想得到数字0,可以选择空集作为子集;要想得到数字k,选择的子集必须包含{0,1,...,k-1}。于是,从前往后扫给的数组a,当前的数字最多能比之前出现过的数字大1,否则这个数字是不能被得到的,当前位置就是t。

【我的实现】

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cmath>
5 #include <algorithm>
6
7 using namespace std;
8 #define MaxN 100020
9 int a[MaxN];
10
11 int main()
12 {
13 int n, x;
14 int cur = -1;
15 scanf("%d", &n);
16 for(int i = 1; i <= n; i++)
17 {
18 scanf("%d", &x);
19 if(x > cur + 1)
20 {
21 printf("%d", i);
22 return 0;
23 }
24 cur = max(cur, x);
25 }
26 printf("-1");
27 return 0;
28 }

【评测结果】

最新文章

  1. Unity3D 之脚本架构,优雅地管理你的代码
  2. Hibernate get和load区别
  3. azure存储压测的问题(农码主观意识太强被坑了)
  4. Nyoj42 一笔画问题 (欧拉道路)
  5. Linux禁止ping服务
  6. HTTP协议细节
  7. JS 经典代码段总结 start from 2016-08-22
  8. 【Python学习笔记之一】Python关键字及其总结
  9. 7、ABPZero系列教程之拼多多卖家工具 修改注册功能
  10. 1.17学习jquery权威指南
  11. 【BZOJ2555】SubString(后缀自动机,Link-Cut Tree)
  12. Spring Boot Security
  13. MySQL实战45讲学习笔记:日志系统(第二讲)
  14. python基础之作业1---用户登录
  15. windows同时安装了两种jdk
  16. python执行centos命令
  17. Docker未启动错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  18. day15(mysql 的多表查询,事务)
  19. Java基础83 JSP标签及jsp自定义标签(网页知识)
  20. 【R】自定义描述统计函数-从均值到峰度偏度

热门文章

  1. JSP页面打印输出,两种方法。out、《%=
  2. after effects的xml格式工程文件aepx的格式分析(一)
  3. nodejs express异常捕获
  4. T-SQL的存储过程
  5. 云图说|DDS读写两步走,带您领略只读节点的风采
  6. WebGPU图形编程(2):构建一个单色的三角形&lt;学习引自徐博士教程&gt;
  7. Django db使用MySQL连接池
  8. java-异常-编译时检测异常和运行时异常区别(throws和throw区别)
  9. 使用jQuery所需添加的头文件
  10. python if-elif-else 判断