A. Constructive Problem

题意:给定一个长度为n的非负数组a,我们可以进行一次操作,操作是将l~r这个区间内的所有数变为k(k >= 0),得到b,能不能使mex(a)+ 1 = mex(b)

思路:我是先排了个序,去了一下重,然后得到的这个数组其实只有两种情况





一种每两个数之间的增量为1

一种是每两个数之间的增量大于1

对于第一种情况

我们考虑原数组大小如果和去重后数组大小相同,这种情况是不能增大的

否则说明有重复元素,我们只需要将重复元素变为n+1即可也就是说一定有解

对于第二种情况

我们考虑第一个增量不为一的地方

假如这个地方的增量为2这样我们就需要将这包含这个数的最小区间内的所有数变成mex(a)+1

然后扫一遍check以下就做完了

假如第一个增量不为一的地方的增量>=3则一定有解

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 2e5 + 10;
int a[N], n;
vector<int>b;
void run()
{
b.clear();
cin >> n;
for(int i = 1; i <= n; ++ i) scanf("%d", &a[i]), b.push_back(a[i]);
sort(b.begin(), b.end());
if(n == 1 && a[1] == 0)
{
puts("NO");
return;
}
b.erase(unique(b.begin(), b.end()), b.end());
if(b[0] != 0)
{
puts("YES");
return;
}
if(b.size() - 1 == b[b.size() - 1])
{
if(n == b.size())
{
puts("NO");
return;
}
else
{
puts("YES");
return;
}
}
int t = 0;
for(int i = 0; i < b.size(); ++ i)
{
if(b[i] != i) break;
t = i;
}
if(b[t + 1] - b[t] >= 3) puts("YES");
else
{
int l = 0, r = 0;
for(int i = 1; i <= n; ++ i)
{
if(a[i] == b[t + 1])
{
l = i;
break;
}
}
for(int i = n; i >= 1; -- i)
{
if(a[i] == b[t + 1])
{
r = i;
break;
}
}
map<int, int>mp;
for(int i = 1; i <= n; ++ i)
{
if(i >= l && i <= r) continue;
mp[a[i]] = 1;
}
for(int i = 0; i <= b[t]; ++ i)
{
if(mp.find(i) == mp.end())
{
puts("NO");
return;
}
}
puts("YES");
}
} int main()
{
// freopen("1.in", "r", stdin);
int t;cin >> t;
while(t --) run();
return 0;
}

#866 div1A的更多相关文章

  1. AOJ.866 飞越原野 (三维BFS)

    AOJ.866 飞越原野 (三维BFS) 题意分析 点我挑战题目 相比于普通的BFS,要多一维来记录当前剩余的体力.而且还要额外的一层循环来处理,飞过的路程. 代码总览 #include <io ...

  2. LeetCode 866. Prime Palindrome

    866. Prime Palindrome(回文素数) 题目: 求出大于或等于 N 的最小回文素数. 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数. 例如,2,3,5,7 ...

  3. AcWing 866. 试除法判定质数

    #include <iostream> #include <algorithm> using namespace std; bool is_prime(int x) { ) r ...

  4. 866. Prime Palindrome

    Find the smallest prime palindrome greater than or equal to N. Recall that a number is prime if it's ...

  5. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  6. HTML5移动开发学习笔记之CSS3基础学习

    CSS回顾 在学CSS3之前首先巩固下CSS的基础知识. 1.CSS框模型 举例子: #box { width: 70px; margin: 10px; padding: 5px; } 这个代码将出现 ...

  7. java web学习总结(二十七) -------------------JSP标签介绍

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  8. Dagger2 (二) 进阶篇

    一.作用域Scope 之前了解RoboGuice的时候,我们知道它默认给我们提供了几个注解,ContextSingleton和Singleton,但是Dagger2更为灵活,只有javax包中提供的S ...

  9. Apache主配置文件httpd.conf 详解

    Apache的主配置文件:/etc/httpd/conf/httpd.conf 默认站点主目录:/var/www/html/ Apache服务器的配置信息全部存储在主配置文件/etc/httpd/co ...

  10. Python之路【第二十四篇】Python算法排序一

    什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. ...

随机推荐

  1. Jenkins自动化测试构建完成 发送钉钉消息

    背景 有时自动化测试完成后,我们可以通过构建完成后给钉钉群发消息,这样就能及时通知到所有人员了. 接入流程 1:建立钉钉机器人,可以通过群助手,添加机器人,增加WebHook自定义接入,然后添加完成会 ...

  2. 使用Python读取图片

    一.Python学习两大道具 1. dir()工具 作用:支持打开package,看到里面的工具函数 示例: (1) 输出torch库包含的函数 dir(torch) (2) 输出torch.AVG函 ...

  3. 使用mybatis-generator 能生成 但是实际使用时抛出异常Invalid bound statement (not found)

    好多好多好多红 但是重点是一句org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): {}.d ...

  4. MybatisPlus的各种查询方法

    MybatisPlus的各种查询方法 合并转载于https://my.oschina.net/u/241218/blog/1838534/和https://my.oschina.net/u/24275 ...

  5. 【技术实战】Vue技术实战【二】

    需求实战一 效果展示 代码展示 <template> <div> <a-table :dataSource="dataSource" :columns ...

  6. peewee模块更改数据-sqlite

    更改数据 from playhouse.migrate import *# SQLite example: my_db = SqliteDatabase('my_database.db') migra ...

  7. 用React仿钉钉审批流

    引言 这几天帮朋友忙,用了一周时间,高仿了一个钉钉审批流.这个东西会有不少朋友有类似需求,就分享出来,希望能有所帮助.为了方便朋友的使用,设计制作的时候,尽量做到节点配置可定制,减少集成成本.如果您的 ...

  8. 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度

    编写一个函数,返回两个数字的和.输入数字是字符串,函数必须返回一个字符串. 示例: 添加("123","321"):->"444" 添 ...

  9. [kvm]cpu内存硬盘配置

    修改CPU配置 如果配置了最大CPU # 临时 virsh setvcpus test 2 # 永久 virsh setvcpus test 2 --config 热增加虚拟机的CPU数后,使用lsc ...

  10. Amiya 前端UI

    最近在使用一个基于Ant Design 二次封装的组件 Git文档地址 Index - Amiya (gitee.io)