题目链接:https://ac.nowcoder.com/acm/contest/112544/E

思路

首先输入每个数字时候判断一遍该数字与下标大小关系,如果小于下标说明说,因为最小情况严格单调递增情况下,是所有数字都对应下标,而这个数字甚至小于下标,所以说,这个数字一定需要进行一次改变,那么设定一个set记录修改过的数字,以便后续对同样数字进行处理修改为下标数字处理。

接着设定l表示判断的左边界,这个边界表示1~l的数字都已经排好数字了。每次循环都对标记过的数字进行及时修改。接着从后往前遍历,获取第一个需要修改的下标,如果说l-1与i相等说明,完整的进行了一次区间的判断,说明区间数字都没问题,这时候就直接break退出循环,否则就将l与此时i区间的数字进行判断修改,如果数字不等于下标就进行修改,后续因为可能出现大数字修改为下标数字改变了单调性的情况,所以需要不断while循环,直到完整结束

题解

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int t,n;
int a[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--)
{
int i;
cin>>n;
set<int>s;
for(i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]<i)s.insert(a[i]),a[i]=i;
}
int l = 1;
while(1)
{
for(i=l;i<=n;i++)
{
if(s.count(a[i]))
{
a[i]=i;
} }
for(i=n-1;i>=l;i--)
{
if(a[i]>=a[i+1])break;
}
if(i<l)break;
for(int j=l;j<=i;j++)
{
if(a[j]!=j)s.insert(a[j]);
}
l=i+1;
}
cout<<s.size()<<endl;
}
return 0;
}

牛客周赛 round99 E题 小宇的更多相关文章

  1. 牛客网Java刷题知识点之为什么HashMap和HashSet区别

    不多说,直接上干货! HashMap  和  HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...

  2. 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  3. 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  4. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  5. 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类

    不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...

  6. 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  7. 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  8. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  9. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  10. 牛客网Java刷题知识点之泛型概念的提出、什么是泛型、泛型在集合中的应用、泛型类、泛型方法、泛型接口、泛型限定上限、泛型限定下限、 什么时候使用上限?泛型限定通配符的体现

    不多说,直接上干货! 先来看个泛型概念提出的背景的例子. GenericDemo.java package zhouls.bigdata.DataFeatureSelection; import ja ...

随机推荐

  1. System.Runtime.Serialization.SerializationException:“二进制流“0”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。

    var buffer = new byte[1024]; using (var ms = new MemoryStream(buffer)) { //xxx } 原因是buffer的长度过短,当接受到 ...

  2. ASP.NET Core相关下载资源汇总

    1.Net.6的Host Bundle的下载地址(IIS)服务配套组件: https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 2.docker ...

  3. C#程序的内存缓存

    C#程序可以使用IMemoryCache.IMemoryCache是.NET Core中内置的一个轻量级缓存实现,可以用于在内存中缓存数据,以提高应用程序的性能和响应速度.它支持通过键值对的方式缓存数 ...

  4. java常用包的介绍

    java.* java.lang    包含Java程序所需要的基本类(默认导入) java.util         包含丰富的常用工具类,如集合框架.事件模式.日期时间等 java.math   ...

  5. Java安全01——URLDNS链分析与利用

    URLDNS链分析与利用 作用 URLDNS 利用链只能发起 DNS 请求,不能执行命令,所以用于漏洞的检测 不限制JDK版本,使用Java内置类,无第三方依赖要求 可以进行无回显探测 利用链 ​ 利 ...

  6. php伪随机数爆破

    php伪随机数爆破 涉及到的函数为mt_rand() mt_rand(min, max) 返回min到max之间的伪随机数,如果参数缺省,则返回0到RAND_MAX之间的伪随机数. 不同于常规的伪随机 ...

  7. C# 获取磁盘或硬盘信息的坑,存在未就绪(IsReady = false)导致异常的问题

    最近测试组小伙伴在用外接扩展坞链接有线网络,发现好几个程序在获取磁盘信息的时候都直接报错.这让我很奇怪,拉取了现场的日志. 由于这个模块的代码已经很稳定,好久没修改过了,之前一直测试都没有问题的,然后 ...

  8. Java 实现微信小程序不同人员生成不同小程序码并追踪扫码来源

    Java后台实现微信小程序不同人员生成不同小程序码并追踪扫码来源 下面我将详细介绍如何使用Java后台实现这一功能. 一.整体架构设计 前端:微信小程序 后端:Java (Spring Boot) 数 ...

  9. 物无弃材 —— 混闪机型部署 OceanBase 集群的探索

    本文作者:联通研究院 邱永刚 首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 #数据库.#AI.#技术架构 相关的各种技术内容. ...

  10. APEX实战第4篇:如何把APEX程序变成“移动端APP”?

    因为使用手机登录APEX程序时,每次都要先到手机浏览器的入口感觉不方便且不专业,所以能不能像APP那样直接点击进入呢? 最简单的方式,就是使用PWA来实现类似APP程序一样的移动端登录. PWA本身配 ...