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. 掌握把“烂”SQL牢牢关进笼子里的密钥

    摘要:本文通过5个部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把"烂"SQL牢牢关进笼子里. 本文分享自华为云社区<直播回顾 | 掌 ...

  3. docker部署zabbix 6.0高可用集群实验

    0 实验环境 虚拟机,postgresql本地部署,zabbix server及nginx容器部署 1 postgresql 参看前作 <postgresql + timescaledb离线安装 ...

  4. C# LinearGradientBrush使用报错

    今天在学习C#时使用 LinearGradientBrush 属性发生了如上错误,发现引用其时并没有提示 在添加了此命名空间后恢复正常

  5. NOI2023 题解

    打的太 shaber 了,于是补补题. D1T1 扫描线. 首先我们可以容斥一下,答案为被一种操作覆盖到的减去被两种操作覆盖到的加上被三种操作覆盖到的. 首先考虑只被一种操作覆盖到的,这很简单,直接上 ...

  6. (转) [Android测试] AS+Appium+Java+Win自动化测试之三: 基础知识和Appium界面

    一.把上一章的demo先看懂 AndroidContactsTest.Java public class AndroidContactsTest { //Driver private AppiumDr ...

  7. [linux]搭建nfs

    环境 说明 IP 系统版本 服务端 192.168.137.7 centos 7 客户端 192.168.137.8 centos 7 步骤 配置服务端 安装 nfs 服务 yum install - ...

  8. 手工搭建并配置apache,php,mysql环境服务器

    1,安装apache2.4: 从apache官网中下载windows版本的apache二进制文件,解压 打开apache目录中的bin目录,在其中打开cmd窗口,使用命令: httpd -k inst ...

  9. quarkus数据库篇之四:本地缓存

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<quarkus数据库篇> ...

  10. .NET周刊【8月第2期 2023-08-14】

    本周由于Myuki大佬感染新冠,国际板块暂停更新一周,将在下周补齐,所以本周只有国内板块. 国内文章 解决 Blazor 中因标签换行导致的行内元素空隙问题 https://www.cnblogs.c ...