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,?,n?1

我們在進行操作時,需分成兩種情況討論。

  • m e x ≠ n mex \neq n mex=n,由于最后的序列要滿足 a i = i ? 1 a_i=i-1 ai?=i?1,所以我們這里就將 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?=i?1 的數,然后將其賦值為 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.pswp.cn/web/38094.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38094.shtml
英文地址,請注明出處:http://en.pswp.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)&…