当前位置: 首页 > news >正文

插入排序C++

题目:


样例解释:

【样例解释 #1】
在修改操作之前,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序结束后所处的位置分别是 3,2,1。

在修改操作之后,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序结束后所处的位置分别是 3,1,2。

注意虽然此时 a2​=a3​,但是我们不能将其视为相同的元素


思路:

可以发现,对于一个已经有序的数列,单点修改一个值,我们可以通过前后冒泡各一次来保持有序,举个例子:

原序列为 1,1,4,5,6,71,1,4,5,6,7,修改为 1,1,9,5,6,71,1,9,5,6,7。

我们可以从前往后冒泡,再次维持了数列的有序。这样的操作是 O(n)O(n) 的。

同样的,我们可以维护一个有序数列,并记录原下标与先下标之间的关系(用数组记录),每次修改后更新这种关系。

这样,修改操作是 O(n)O(n) 的,查询是 O(1)O(1) 的。

 


代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=8005;
int n,q;
int t[MAXN];
struct node{int pre,id;
}a[MAXN];
bool cmp(node x,node y){if(x.pre!=y.pre) return x.pre<y.pre;return x.id<y.id;
}//两个元素之间的优先级
int main(){//freopen("sort.in","r",stdin);//freopen("sort.out","w",stdout);scanf("%d%d",&n,&q); for(int i=1;i<=n;i++){scanf("%d",&a[i].pre);a[i].id=i;}//输入sort(a+1,a+n+1,cmp);//排序for(int i=1;i<=n;i++)t[a[i].id]=i;for(int i=1;i<=q;i++){int opt,x,v;scanf("%d",&opt);if(opt==1){//单点修改scanf("%d%d",&x,&v);//Ax->va[t[x]].pre=v;for(int j=n;j>=2;j--)if(cmp(a[j],a[j-1])){node kkksc03=a[j];a[j]=a[j-1];a[j-1]=kkksc03;}//前扫for(int j=2;j<=n;j++)if(cmp(a[j],a[j-1])){node kkksc03=a[j];a[j]=a[j-1];a[j-1]=kkksc03;}//后扫for(int i=1;i<=n;i++)t[a[i].id]=i;//更新之间的关系}else{scanf("%d",&x);printf("%d\n",t[x]);}}return 0;
}

 

相关文章:

插入排序C++

题目&#xff1a; 样例解释&#xff1a; 【样例解释 #1】 在修改操作之前&#xff0c;假设 H 老师进行了一次插入排序&#xff0c;则原序列的三个元素在排序结束后所处的位置分别是 3,2,1。 在修改操作之后&#xff0c;假设 H 老师进行了一次插入排序&#xff0c;则原序列的三个…...

修改ID不能用关键字作为ID校验器-elementPlus

1、校验器方法 - forbiddenCharValidator const idUpdateFormRef ref(null); const forbiddenCharValidator (rule, value, callback) > {const forbiddenCharacters [as,for,default,in,join,left,inner,right,where,when,case,select];for (let forbiddenCharacter o…...

一文详解WebRTC、RTSP、RTMP、SRT

背景 好多开发者&#xff0c;希望对WebRTC、RTSP、RTMP、SRT有个初步的了解&#xff0c;知道什么场景该做怎样的方案选择&#xff0c;本文就四者区别做个大概的介绍。 WebRTC 提到WebRTC&#xff0c;相信好多开发者第一件事想到的就是低延迟&#xff0c;WebRTC&#xff08;W…...

全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记

ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&#xff0c;为分布式应用提供一致性服务。它的设计目标是简化分布式系统的管理&#xff0c;保证多个节点之间的数据一致性和协调工作。ZooKeeper提供了类似文件系统的层次化命名空间&#xff0c;用来存储和管理元数…...

不同领域神经网络一般选择什么模型作为baseline(基准模型)

在神经网络研究中&#xff0c;选择合适的baseline&#xff08;基线模型&#xff09;是评估新方法有效性的重要步骤。基线模型通常是领域内公认的、性能良好的参考模型&#xff0c;用于比较和验证新提出模型的优势。以下是一些在不同任务和领域中常见的基线模型选择&#xff1a;…...

华为-IPv6与IPv4网络互通的6to4自动隧道配置实验

IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…...

【spring中event】事件简单使用

定义事件类 /* * 1. 定义事件类 * 首先&#xff0c;我们创建一个自定义事件 UserRegisteredEvent&#xff0c;用于表示用户注册事件。 * */ public class UserRegisteredEvent extends ApplicationEvent {private final String email;public UserRegisteredEvent(Object sourc…...

leetcode每日一题day19(24.9.29)——买票需要的时间

思路&#xff1a;在最开始的情况下每人需要买的票数减一是能保持相对位置不变的&#xff0c; 如果再想减一就有可能 有某些人只买一张票&#xff0c;而离开了队伍&#xff0c; 所有容易想到对于某个人如果比当前的人买的多就按当前的人数量算 因为在一次次减一的情况下&#xf…...

智源研究院推出全球首个中文大模型辩论平台FlagEval Debate

近日&#xff0c;智源研究院推出全球首个中文大模型辩论平台FlagEval Debate&#xff0c;旨在通过引入模型辩论这一竞争机制对大语言模型能力评估提供新的度量标尺。该平台是智源模型对战评测服务FlagEval大模型角斗场的延展&#xff0c;将有助于甄别大语言模型的能力差异。 F…...

python实用脚本(二):删除xml标签下的指定类别

介绍 在目标检测中&#xff0c;有些时候会遇到标注好的类别不想要了的情况&#xff0c;这时我们可以运行下面的代码来批量删除不需要的类别节省时间。 代码实现&#xff1a; import argparseimport xml.etree.ElementTree as ET import osclasses [thin_smoke]def GetImgNam…...

vue3 父子组件调用

vue3 父子组件调用 父组件调用子组件方法 子组件使用defineExpose将方法抛出 父组件定义 function&#xff0c;子组件通过 defineExpose 暴露方法&#xff0c;父组件通过 ref 获取子组件实例&#xff0c;然后通过 ref 获取子组件方法。 // 父组件 <template><div>…...

线性模型到神经网络

&#x1f680; 在初始神经网络那一节&#xff08;链接如下&#xff1a;初始神经网络&#xff09;的最后&#xff0c;我们通过加大考虑的天数使得我们最后得到的模型Loss最终停留在了0.32k&#xff0c;当我们在想让模型更加准确的时候&#xff0c;是做不到的&#xff0c;因为我们…...

【架构】前台、中台、后台

文章目录 前台、中台、后台1. 前台&#xff08;Frontend&#xff09;特点&#xff1a;技术栈&#xff1a; 2. 中台&#xff08;Middleware&#xff09;特点&#xff1a;技术栈&#xff1a; 3. 后台&#xff08;Backend&#xff09;特点&#xff1a;技术栈&#xff1a; 示例场景…...

Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)

在Stable Diffusion中&#xff0c;蒙版是一个重要工具&#xff0c;它允许用户对图像的特定部分进行编辑或重绘。关于蒙版蒙住的内容处理选项&#xff0c;包括填充、原图、潜空间噪声&#xff08;潜变量噪声&#xff09;、浅空间数值零&#xff08;潜变量数值零&#xff09;&…...

ffmpeg录制视频功能

本文目录 1.环境配置2.ffmpeg编解码的主要逻辑&#xff1a;3. 捕获屏幕帧与写入输出文件4. 释放资源 在录制结束时&#xff0c;释放所有分配的资源。5.自定义I/O上下文6.对于ACC编码器注意事项 1.环境配置 下载并安装FFmpeg库 在Windows上 从FFmpeg官方网站下载预编译的FFmpeg…...

【LeetCode】每日一题 2024_10_1 最低票价(记忆化搜索/DP)

前言 每天和你一起刷 LeetCode 每日一题~ 大家国庆节快乐呀~ LeetCode 启动&#xff01; 题目&#xff1a;最低票价 代码与解题思路 今天这道题是经典动态规划&#xff0c;我们定义 dfs(i) 表示从第 1 天到 第 i 天的最小花费&#xff0c;然后使用祖传的&#xff1a;从记忆…...

[C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品

目录 先赞后看 养成习惯 War and Expedition SLG DNF 0.0.1 version 讲人话就是 图标解释&#xff1a; 绿色代表空地&#xff0c;可通过&#xff0c;对应数值 0 蓝色“~ ”为水&#xff0c;不可通过&#xff0c;对应数值 1 棕色“”为桥梁&#xff0c;可通过&#xff0…...

黑马头条day7-app端文章搜索

今天的内容也只是跑了一下 对于具体的实现掌握的很差 仔细看 es 在微服务学的es使用基本忘光了 这里用起来一点都熟悉 重学&#xff01;&#xff01;&#xff01; kafka异步 文章自动构建索引的时候用到了‘’ mongoDB 用来存储用户的搜索记录 遗忘&#xff08;拦截器 j…...

嵌入式必懂微控制器选型:STM32、ESP32、AVR与PIC的比较分析

目录 1 微控制器基础概述 1.1 微控制器基本概念 1.2 工作原理及架构 1.3 STM32、ESP32、AVR和PIC简介 2 微控制器性能比较分析 2.1 性能比较 2.2 功耗比较 2.3 功耗分析 2.4 外设接口对比 3 应用场景与选择策略 3.1 物联网应用场景 3.2 工业控制场景 3.3 智能家居场…...

Python selenium库学习使用实操二

系列文章目录 Python selenium库学习使用实操 文章目录 系列文章目录前言一、模拟登录二、表单录入 前言 在上一篇文章中&#xff0c;我们完成Selenium环境的搭建&#xff0c;和简单的自动化。今天继续深入学习。今天的目标是完成模拟登录&#xff0c;和表单录入。 一、模拟登…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...