题目链接: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. 妙妙线段树+DFS序判断子孙节点,但似乎还可以树链剖分?(CF Div3 909 G)

    G. Unusual Entertainment 原题链接:https://codeforces.com/contest/1899/problem/G 题目大意: 给定一棵树,根节点为1,给定一个\( ...

  2. 解决Andaconda创建虚拟环境出现的“无法定位程序输入点”的问题

    解决Andaconda创建虚拟环境出现的"无法定位程序输入点"的问题 需要查看两个相同名称的文件:libssl-1_1x64.dll 第一个文件的路径:anaconda\DLLs\ ...

  3. Django内置filter总结

    内置过滤器 目的是对绝大多数的内置过滤器进行测试总结学习,现设置如下: urls.py中设置: urlpatterns=[ url(r'^method',views.method,name='meth ...

  4. HarmonyOS 实战:给笔记应用加防截图水印

    最近在做笔记类应用时,遇到一个头疼的需求:防止用户内容被非法截图传播.思来想去,加水印是个直接有效的方案.研究了 HarmonyOS 的开发文档后,发现用 Canvas 配合布局组件能轻松实现动态水印 ...

  5. python爬虫基本学习——函数

    函数 概念:编写程序时,需要某块代码多次,为了提高编写效率和代码的重用,把具有独立功能的代码块组织为一个小模块,即函数. 代码练习 ''' #函数的定义 def printinfo(): print( ...

  6. 使用RandomAccessFile监听日志文件,并实时一行行读取出来

    public static void main(String[] args) { String filePath = "E:\\codes\\work\\product-parent\\lo ...

  7. Vue.js作者谈:Vue 3 最新进展_VueConf 2018

    本文只是针对视频内容的重点整理,如若不清楚的地方请看文末链接的现场视频内容. Vue3.0会带来些什么: 更快 更小 更易于维护 更好的多端渲染支持 其他新功能 更快: 重构虚拟DOM:更多虚拟时的优 ...

  8. ArkUI-X应用工程结构说明

    简介 本文档配套ArkUI-X,将OpenHarmony ArkUI开发框架扩展到不同的OS平台,比如Android和iOS平台,让开发者基于ArkUI,可复用大部分的应用代码(UI以及主要应用逻辑) ...

  9. 第一次通过 SSH key 免密连接 GitHub 的完整过程

    原文:https://ichochy.com/posts/blog/20221107.html 通过密码连接GitHub总是要输入密码,麻烦,现在使用 SSH key 可以轻松实现免密验证. 创建 S ...

  10. ATE机台哪家强?

    这是IC男奋斗史的第36篇原创 本文2435字,预计阅读6分钟. ATE的基本概念 ATE是Automatic Test Equipment的缩写,翻译过来也就是自动化测试设备.在所有电子元器件的生产 ...