CF1375D Replace by MEX 题解

题目大意

m e x mex mex 为序列中最小的没有出现的数。

给你一个长度为 n n n 的序列 a a a,你可以进行不超过 2 × n 2\times n 2×n 次操作,使得序列 a a a 单调不降。每次操作你可以选定一个位置 p p p,并将 a p a_p ap 赋值为 m e x mex mex。请你输出总共的操作次数与每次操作的位置。

解题思路

题目说了, ∀ x ∈ a , 0 ≤ x ≤ n \forall x \in a,0\le x\leq n xa,0xn。所以,我们考虑将 a a a 变为 0 , 1 , ⋯ , n − 1 0,1,\cdots,n-1 0,1,,n1

我们在进行操作时,需分成两种情况讨论。

  • m e x ≠ n mex \neq n mex=n,由于最后的序列要满足 a i = i − 1 a_i=i-1 ai=i1,所以我们这里就将 a m e x + 1 a_{mex+1} amex+1 赋值为 m e x mex mex
  • m e x = n mex = n mex=n,那我们就找到序列中任意一个满足 a i ≠ i − 1 a_i \neq i - 1 ai=i1 的数,然后将其赋值为 m e x mex mex。如果没有找到,说明现在的序列已经满足题意,不需要再进行操作了。

大概思路就是这样。瞟了一眼数据范围,发现 n n n 比较小,于是我们在求 m e x mex mex 的值时可以暴力求解。

CODE:

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[1010], b[2010], vis[1010];
signed main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t, n;cin >> t;while (t--) {memset(vis, 0, sizeof vis);cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];vis[a[i]]++; }int ans = 0;   //总共的操作次数/*最后a[i] = i - 1 */while (1) {int mex = 0;for (int i = 0; i <= n; i++) {  //查找 mexif (!vis[i]) {mex = i;break;}}if (mex != n) {vis[a[mex + 1]]--;b[++ans] = mex + 1;a[mex + 1] = mex;vis[mex]++;} else {bool f = 0;for (int i = 1; i <= n; i++) {if (a[i] != i - 1) {f = 1;vis[a[i]]--;a[i] = mex;vis[mex]++;b[++ans] = i;break;}}if (!f)  //序列合法,不需要再进行操作了break;}}cout << ans << endl;for (int i = 1; i <= ans; i++)cout << b[i] << ' ';cout << endl;}return 0;
}

总了个结

这题非常水,建议评绿。简单构造,建议尝试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文看尽AI绘画工具 Stable Diffusion发展史,AI绘画究竟发展到什么地步了?!

01、引言 Stable Diffusion 在短短两年内发布了多个版本。最著名的版本是 1.5 和 SDXL。不过&#xff0c;还有许多其他版本值得一提。让我们一起来探索稳定扩散模型的起源和发展。 闲话少说&#xff0c;我们直接开始吧&#xff01; 02、缺失的SD V1.0版本 Stable Diffusion…

材质相关内容整理 -ThreeJs

在Three.js中&#xff0c;材质是用来定义3D对象外观的关键部分。Three.js支持多种材质文件和类型&#xff0c;每种材质都有其特定的用途和优势。下面简单整理了一下目前Three.js支持的材质文件和类型。 一、Three.js支持的材质文件类型 JPEG (.jpg) 和 PNG (.png) 用途&#x…

iphone新机官网验机流程

若您想购买新款iPhone并在官方网站上验证机器的真实性&#xff0c;可以按照以下流程进行&#xff1a; 打开苹果官方网站&#xff08;https://www.apple.com&#xff09;。在导航栏中选择“iPhone”选项&#xff0c;进入iPhone的产品页面。在页面中找到您想要购买的新款iPhone&…

C语言快速学习笔记

学习网站&#xff1a;C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com) 这个网站知识完整&#xff0c;讲解清晰。 在线C语言编程工具&#xff1a;菜鸟教程在线编辑器 (runoob.com) 国外学习网站&#xff1a;C语言介…

【机器学习】机器学习的重要方法——线性回归算法深度探索与未来展望

欢迎来到 破晓的历程博客 引言 在数据科学日益重要的今天&#xff0c;线性回归算法以其简单、直观和强大的预测能力&#xff0c;成为了众多领域中的基础工具。本文将详细介绍线性回归的基本概念、核心算法&#xff0c;并通过五个具体的使用示例来展示其应用&#xff0c;同时探…

使用conda创建虚拟环境,并将虚拟环境加载到jupyter notebook中【已解决】

使用conda创建虚拟环境&#xff0c;并将虚拟环境加载到jupyter notebook中【已解决】

免费分享:2000-2021年全国分省250mNDVI数据集(附下载方法)

NDVI (Normalized Difference Vegetation Index)归一化植被指数&#xff0c;又称标准化植被指数。是目前应用最广泛的植被指数&#xff0c;与植被的分布呈线性相关&#xff0c;是植被生长状态和空间分布的最佳指示因子&#xff0c;也是遥感估算植被覆盖度(FVC&#xff0c;Fract…

深入学习 Kafka(2)- Partition 和 Topic

1. Partition的作用 Topic是逻辑的概念&#xff0c;Partition是物理的概念&#xff1a; Partition 对一个 Topic 的消息进行物理上的分离&#xff0c;让消息可以分布在不同的实体机器上&#xff0c;可以提升系统吞吐量和并行处理能力。每个Partition可以有多个副本&#xff08…

交换机06_vlantrunk

一、虚拟局域网vlan 目的&#xff1a;划分广播域 思科设备如何去配置vlan 创建vlan设置对应的接口模式将接口加入vlan全局模式配置vlan vlan 2 设置接口模式&#xff08;目前需要将接口加入对应vlan&#xff0c;一般用于连接PC&#xff09; en conf t int f0/0 switchport m…

SAP S/4 FICO批量创建银行主数据(银行主数据/账户主数据)开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

开发通用说明 新增程序——批导工具处理逻辑如下:自定义批导程序():点击“执行”按钮若数据错误或重复,先检查导入的银行账号是否已在系统中存在,若已存在则状态显示为红灯,并在消息反馈列提示“该银行已经存在”。查重后若银行账户为新增账户,但导入模板提供的数据有缺…

Spring Boot中获取请求参数的几种方式详解

Spring Boot中获取请求参数的几种方式详解 在Web开发中&#xff0c;处理HTTP请求是一项基本且核心的任务。Spring Boot作为目前最流行的Java Web开发框架之一&#xff0c;提供了多种简便的方式来获取和处理请求参数。本文将深入探讨在Spring Boot中获取请求参数的几种方式&…

学会python——用python编写一个计算机程序(python实例十六)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.编写计算器程序 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…

【C语言】刷题笔记 Day1

多刷题 多思考 【题目1】 实现字母的大小写转换&#xff0c;实现多组输入输出 1. getchar 为输入函数&#xff0c;EOF&#xff08;end of file&#xff09;为文件结束标志&#xff0c;通常为文件结束的末尾。 2. 题目中要求实现多组输入输出&#xff0c;那我们用 while 循…

RH442 计算机测量单位的换算

计算机测量单位的换算 计算机测量单位的换算 计算机测量单位的换算 在本练习中&#xff0c;您要将性能指标从一个单位换算成另一个单位。 成果 您要学会性能指标单位的换算。 以 student 用户登录 workstation 虚拟机&#xff0c;密码为 student。 在 workstation上运行 l…

初步认识 B树(B-tree)

定义 B树&#xff08;B-tree&#xff09;是一种自平衡的多路搜索树&#xff0c;广泛应用于数据库和文件系统的索引结构中。它能够保持数据有序&#xff0c;同时提供高效的插入、删除和查找操作。 一、基本概念 定义&#xff1a;B树是一种自平衡的树结构&#xff0c;能够保持…

python+django 环境搭建以及post接口封装

1、搭建pythondjango环境 python 3.7.9的版本 具体参考之前的安装教程 django 使用 pip install django 会自动安装 检验安装版本&#xff1a; python -m django --version 2、创建django项目 django-admin startproject projectname 启动项目&#xff1a;python manage.py…

011-GeoGebra基础篇-验证泰勒斯定理(动点在指定曲线上移动)

注意咯&#xff0c;如果说前期的文章随便看看就行&#xff0c;但从这篇往后的内容&#xff0c;则需要君略微动动brain了。当然&#xff0c;后续的文章如果感觉吃力的话&#xff0c;可以看看本专栏序号比较小的文章&#xff0c;可能会对你开卷有益。 若A, B, C是圆周上的三点&am…

Windows PowerShell 添加新配置文件(打开对应的目录,并执行命令)

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe ./redis-server.exe %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe yarn dev 人工智能学习网站 https://chat.xutongbao.top

数据分析如何在企业中发挥价值

数据分析如何在企业中发挥价值 数据分析的目的是什么为什么怎么做做什么 思考问题流程确认问题拆解问题量化分析 分析数据流程收集数据处理数据制作图表 全流程 数据分析的目的 是什么 通过数据量化企业当前的经营现状或业务事实&#xff0c;将业务细节转换为具体数据&#xf…

通过容器启动QAnything知识库问答系统

QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。目前已支持格式&#xff1a;PDF(pdf)&#xff0c;Word(docx)&#xff0c;PPT(pptx)&#xff0c;XLS(xlsx)&#xff0c;Markdown(md)&…