CSP-J 2021 T2 插入排序

文章目录

  • 题目传送门
  • 算法解析
  • 总代码
  • 提交记录
  • 尾声

题目传送门

洛谷 P7910 [CSP-J 2021] 插入排序

算法解析

千万不要题目让你插入排序你就插入排序

首先可以用 p a i r pair pair 来存储元素的值( f i r s t first first)和原来的下标( s e c o n d second second

再用一个数组 p o s i pos_i posi 来记录原来的第 i i i 个元素现在在第几位

初始化:

scanf("%d%d", &n, &q);

for(int i = 1; i <= n; ++i) {
	scanf("%d", &a[i].first);
	a[i].second = pos[i] = i;
}

接下来是重点 !!!

重点来了

想一下,如果原本序列有序,更改一个数的值,那么一遍冒泡排序就可以维护顺序(即如果它小,则把它往前放,如果它大,则把它往后放,具体请参考代码)

得出函数 s o r t sort sort_ o n c e once once

void sort_once() {
	for(int i = 1; i < n; ++i)
		if(a[i] > a[i + 1]) {
			swap(pos[a[i].second], pos[a[i + 1].second]);
			swap(a[i], a[i + 1]);
		}
	
	for(int i = n - 1; i > 0; --i)
		if(a[i] > a[i + 1]) {
			swap(pos[a[i].second], pos[a[i + 1].second]);
			swap(a[i], a[i + 1]);
		}
}

剩下的就简单了

while(q-- && scanf("%d%d", &op, &x)) {
	if(op == 1) {
		scanf("%d", &y);
		for(int i = 1; i <= n; ++i)
			if(a[i].second == x) {
				a[i].first = y;
				break;
			}
		sort_once();
	} else
		printf("%d\n", pos[x]);
}

总代码

#include <cstdio>
#include <algorithm>
#include <utility>
#define N 10005
using namespace std;

int n, q;
pair <int, int> a[N];
int op, x, y;
int pos[N];

void sort_once() {
	for(int i = 1; i < n; ++i)
		if(a[i] > a[i + 1]) {
			swap(pos[a[i].second], pos[a[i + 1].second]);
			swap(a[i], a[i + 1]);
		}
	
	for(int i = n - 1; i > 0; --i)
		if(a[i] > a[i + 1]) {
			swap(pos[a[i].second], pos[a[i + 1].second]);
			swap(a[i], a[i + 1]);
		}
}

int main() {
	scanf("%d%d", &n, &q);
	
	for(int i = 1; i <= n; ++i) {
		scanf("%d", &a[i].first);
		a[i].second = pos[i] = i;
	}
	
	for(int i = 1; i <= n; ++i)
		sort_once();
	
	while(q-- && scanf("%d%d", &op, &x)) {
		if(op == 1) {
			scanf("%d", &y);
			for(int i = 1; i <= n; ++i)
				if(a[i].second == x) {
					a[i].first = y;
					break;
				}
			sort_once();
		} else
			printf("%d\n", pos[x]);
	}
	
	return 0;
}

提交记录

提交记录

提交记录 · 点这里

尾声

如果这篇博客对您(您的团队)有帮助的话,就帮忙点个赞,加个关注!

最后,祝您(您的团队)在 OI 的路上一路顺风!!!

┬┴┬┴┤・ω・)ノ ByeBye

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue组件中的scoped属性

Vue组件中的scoped属性的作用是&#xff1a;当前的单文件组件的css样式只用于当前组件的template模板&#xff0c;在Vue脚手架汇总组件间关系时避免样式命名重复的情况。 原理&#xff1a;使用data-*属性在template模板中使用样式的HTML元素上添加额外属性&#xff0c;再利用标…

【UE5】游戏框架GamePlay

游戏框架 游戏 由 游戏模式(GameMode) 和 游戏状态(GameState) 所组成 加入游戏的 人类玩家 与 玩家控制器(PlayerController) 相关联 玩家控制器允许玩家在游戏中拥有 HUD&#xff0c;这样他们就能在关卡中拥有物理代表 玩家控制器还向玩家提供 输入控制&#xff08;Input…

【Qt】四种绘图设备详细使用

绘图设备有4个: **绘图设备是指继承QPainterDevice的子类————**QPixmap QImage QPicture QBitmap(黑白图片) QBitmap——父类QPixmapQPixmap图片类&#xff0c;主要用来显示&#xff0c;它针对于显示器显示做了特殊优化&#xff0c;依赖于平台的&#xff0c;只能在主线程…

掘根教你拿捏C++异常(try,catch,throw,栈解退,异常规范,异常的重新抛出)

在介绍异常之前&#xff0c;我觉得很有必要带大家了解一下运行时错误和c异常出现之前的处理运行时错误的方式。这样子能更深入的了解异常的作用和工作原理 运行阶段错误 我们知道&#xff0c;程序有时候会遇到运行阶段错误&#xff0c;导致程序无法正常运行下去 C在运行时可…

【Springer出版 · EI检索】| 第二届先进无人飞行系统国际会议(ICAUAS 2024)

会议简介 Brief Introduction 2024年第二届先进无人飞行系统国际会议(ICAUAS 2024) 会议时间&#xff1a;2024年6月14日-16日 召开地点&#xff1a;中国南昌 大会官网&#xff1a;ICAUAS 2024-2024 2nd International Conference on Advanced Unmanned Aerial Systems2024 2nd …

即插即用篇 | YOLOv8 引入 ParNetAttention 注意力机制 | 《NON-DEEP NETWORKS》

论文名称:《NON-DEEP NETWORKS》 论文地址:https://arxiv.org/pdf/2110.07641.pdf 代码地址:https://github.com/imankgoyal/NonDeepNetworks 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yaml

视频监控平台EasyCVR+4G/5G应急布控球远程视频监控方案

随着科技的不断发展&#xff0c;应急布控球远程视频监控方案在公共安全、交通管理、城市管理等领域的应用越来越广泛。这种方案通过在现场部署应急布控球&#xff0c;实现对特定区域的实时监控&#xff0c;有助于及时发现问题、快速响应&#xff0c;提高管理效率。 智慧安防视…

vite+vue3门户网站菜单栏动态路由控制

门户网站用户端需要分板块展示&#xff0c;板块内容由管理端配置&#xff0c;包括板块名称&#xff0c;访问路径&#xff0c;路由组件&#xff0c;展示顺序&#xff0c;是否展示。如下图所示&#xff1a; 用户访问门户网站时&#xff0c;展示菜单跳转通过板块配置&#xff0c;动…

Python笔记(四)—— Python函数

4.1 函数的初体验 函数 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 name "itheima" length len(name) print(length) 运行结果&#xff1a; 思考&#xff1a;为什么随时都可以使用len()统计长度 因为&#xff…

c++ 开发环境 LNK1104: 无法打开文件“avcodec.lib”

别人分享&#xff0c; 和自己最近遇到问题一摸一样。以为没什么用的静态资源&#xff0c;结果 无法编译。 昨天安装配置了&#xff0c;结果今天早上打开电脑&#xff0c;所以dll的工程全部报错&#xff1a; 1>------ 已启动全部重新生成: 项目: Dll_test, 配置: Debug x64…

使用插件vue-seamless-scroll 完成内容持续动态

1、安装插件 npm install vue-seamless-scroll --save 2、项目中引入 //单独引入import vueSeamlessScroll from vue-seamless-scrollexport default {components: { vueSeamlessScroll},}//或者在main.js引入import scroll from vue-seamless-scrollVue.use(scroll)3、页面使…

导游百度百科创建词条的条件?如何才更有效的通过审核

导游在如今的社会中扮演着重要的角色&#xff0c;他们不仅仅是旅行中的引路人&#xff0c;更是旅客们了解目的地地域文化和历史的窗口。因此&#xff0c;作为导游&#xff0c;有必要在百度百科上建立自己的词条&#xff0c;以展现自身的专业知识和经验。那导游百度百科词条创建…

[C++]类和对象,explicit,static,友元,构造函数——喵喵要吃C嘎嘎4

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

uniapp实现---类似购物车全选

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 一、实现思路 点击商家复选框&#xff0c;可选中当前商家下的所有商品。点击全选&#xff0c;选中全部商家的商品 添加单个多选框&#xff0c;在将多选…

【C++】十大排序算法之 归并排序 快速排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

蓝桥杯2023年-买瓜(dfs,类型转换同样耗时)

题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜&#xff0c;每个瓜的重量为 Ai 。 小蓝刀功了得&#xff0c;他可以把任何瓜劈成完全等重的两份&#xff0c;不过每个瓜只能劈一刀。 小蓝希望买到的瓜的重量的和恰好为 m 。 请问小蓝至少要劈多少个瓜才能买到重量恰好…

官宣!百度智能云千帆产品发布会3月21日北京见!

回望2023大模型狂奔的一年&#xff0c;百度智能云千帆大模型平台无疑是浓墨重彩的一笔。自2023年3月27日正式问世后&#xff0c;百度智能云千帆大模型平台以突飞猛进的速度持续发展。从模型、应用到生态&#xff0c;“千帆”书写着自身在大模型时代的答卷。 作为全球首个一站式…

CN错题1

千兆以太网的MAC子层仍然使用 CSMA/CD , 支持半双工 和 全双工通信 。 与INTERNET 连接有 局域网 和 拨号上网 两种方式。 在计算机网络中&#xff0c;服务器提供的共享资源主要是指 硬件 、软件 和 数据库 资源。 在局域网中&#xff0c;硬件地址又称为 MAC地址 或 物理地址 报…

NIO核心二:通道Channel

一、简单介绍 通道(Channel)是java.nio的第二个创建概念。Channel用于在缓冲区和位于通道另一侧的实体(通常是一个文件或者是一个套接字)之间有效的传输数据。只不过Channel本身不能直接访问数据&#xff0c;Channel只能和Buffer进行交互。 1.NIO的通道和流的区别 通道可以同…

基于springboot+vue的周边游平台个人管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…