题目链接:Problem - A - Codeforces

想法:本题分为两种情况,一种是mex(a)+1存在于数据中,另一种是mex(a)+1不存在。

对于第一种情况,我们需要将mex(a)+1最先出现到最后出现的一串数据全变为mex(a),之后再次判断改变后的mex(a)是否为原先的mex(a)+1

第二种情况,需要判断数据是否有重复。如果是0123这样的,是不可行的。但若是0 1 2 2 ,那就是可行的。

知识点:set函数的运用,set.find(it),  set.insert(a[i])

思考:这是我写的第三道A题,我发现我考虑这种问题特别喜欢把特殊情况拎出来写,久而久之代码里就堆满了if。正确做法应该是用一句话概括做法(把握大方向),这道题我做的时候忽略了最重要的点(mex(a)+1是否存在)。#866div2的A题我也想的太复杂了,其实做法就是一句话“在两个-中间插入^”

易错点:求头尾的时候可以先把头值给尾值,避免只有一个数

#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
const int N=2e5+5;
int a[N];int mex(int n){set<int>st;//每次重新放入数据for(int i=0;i<n;i++){//cout<<a[i]<<endl;st.insert(a[i]);//放入不重复数据}int it=0;for(it=0;;it++){if(st.find(it)==st.end()){//如果没有找到就返回end位置return it;}}
}void solve(){int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int m=mex(n);int pre=-1;int next=-1;//初始化!!bool flag=false;for(int i=0;i<n;i++){if(a[i]==m+1&&flag==false){pre=i;flag=true;next=i;//注意此时next也要变}else if(a[i]==m+1&&flag==true){next=i;}}if(pre==-1){if(n==m)cout<<"NO"<<endl;else cout<<"YES"<<endl;}else{for(int i=pre;i<=next;i++){a[i]=m;//cout<<a[i]<<endl;}int res=mex(n);if(res==m+1)cout<<"YES"<<endl;else cout<<"NO"<<endl;}
}int main()
{int t;cin>>t;while(t--){solve();}return 0;
}

A. Constructive Problem相关推荐

  1. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.

    所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...

  2. A + B Problem

    1001: A + B Problem Description 计算 A + B. Input 多组测试数据,每组测试数据占一行,包括2个整数. Output 在一行中输出结果. Sample Inp ...

  3. Error:(49, 1) A problem occurred evaluating project ':guideview'. Could not read script 'https://r

    出现问题如下: Error:(49, 1) A problem occurred evaluating project ':guideview'. > Could not read script ...

  4. #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)

    题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...

  5. ADPRL - 近似动态规划和强化学习 - Note 3 - Stochastic Infinite Horizon Problem

    Stochastic Infinite Horizon Problem 3.Stochastic Infinite Horizon Problem 定义3.1 无限范围的马尔可夫决策过程 (Marko ...

  6. ADPRL - 近似动态规划和强化学习 - Note 2 - Stochastic Finite Horizon Problem

    2. Stochastic Finite Horizon Problem 在这一节中主要介绍了随机DP算法来解决不确定性下的有限地范围问题,如Denition 1.4所述,它被表述为一个组合优化问题. ...

  7. There was a problem confirming the ssl certificate ……

    在安装一个Python库onetimepass时发生下面的问题: pip install onetimepass Could not fetch URL https://pypi.python.org ...

  8. HDU 1757 A Simple Math Problem

    Problem Description Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x & ...

  9. The C10K problem原文翻译

    原文地址:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html The C10K problem 如今的web服务器需要同时处理一万个以 ...

最新文章

  1. 引入大数据监测地方政府信用
  2. Java并发编程题库
  3. docker php伪静态无效,docker 安装 thinkphp+nginx
  4. ML之NB:利用朴素贝叶斯NB算法(CountVectorizer+不去除停用词)对fetch_20newsgroups数据集(20类新闻文本)进行分类预测、评估
  5. cefsharp.wpf离线安装包下载_在vscode里编写c++程序(解决gdb下载失败问题)
  6. 论文推荐|Mask TextSpotter:An End-to-End Trainable Neural Network
  7. 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
  8. 从零开始实现Adam优化算法
  9. 商城项目(一) -- 项目简介、基础搭建及前端部分
  10. [硬件选型] 工业相机之参数和选型
  11. 约翰库缇斯的经典语录
  12. 白苹果了怎么办_iOS更新白苹果处理及第三方售后吐槽
  13. 分享一下自己收集到的真实用户的UA
  14. hbuilder如何设置图片居中显示_hbuilder合并单元格
  15. 鸟哥私房菜 第十五章、时间服务器: NTP 服务器
  16. GitHub:git push问题remote:Support for password authentication was removed on August 13,2021.
  17. bootstrap3中使用bootstrap-datetimepicker日期插件的用法
  18. 四旋翼无人机避障飞行
  19. 4.2.1朴素模式匹配算法
  20. 如何解决java中的安全问题_如何解决java中“使用了未经检查或不安全的操作 请使用 -Xlint:unchecked 重新编译 ”的问题...

热门文章

  1. 抽样分布实践(python版)
  2. vue插槽的使用方法
  3. 创领3G 多普达首款TD手机S700将上市
  4. Chrome浏览器的渲染原理
  5. python 中字符串列表的切割,拼接
  6. 2021-3-23大学化学无机原理(4)化学反应的基本原理化学反应的方向和吉布斯函数
  7. Java面试讲解总结——牛客面经帖
  8. 网络安全学习日记DAY1-入侵流程
  9. javaWeb-jQuery
  10. SpringBoot集成Elasticsearch搜索引擎(九)