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

gesp(C++五级)(2)洛谷:B3951:[GESP样题 五级] 小杨的队列

gesp(C++五级)(2)洛谷:B3951:[GESP样题 五级] 小杨的队列

在这里插入图片描述

题目描述

小杨的班级里共有 N N N 名同学,学号从 0 0 0 N − 1 N-1 N1。某节课上,老师要求同学们进行列队。具体来说,老师会依次点名 M M M 名同学,让他们加入队伍。每名新入队的同学需要先站到队伍末尾(刚开始队伍里一个人都没有,所以第一个入队的同学只需要站好即可),随后,整个队伍中的所有同学需要按身高从低到高重新排序(身高相同的同学之间的顺序任意)。

排队很容易,但重新排序难倒了同学们。稍加讨论后,他们发现可以通过交换位置的方法来实现排序。具体来说,他们可以让队伍中的两名同学交换位置这样整个队伍的顺序就会发生变化,多经过这样的几次交换后,队伍的顺序就可以排好。

例如:队伍中有 4 4 4 名同学,学号依次为 10 , 17 , 3 , 25 10,17,3,25 10,17,3,25,我们可以令 3 3 3 号同学和 10 10 10 号同学交换位置,则交换后的队伍顺序变为 3 , 17 , 10 , 25 3,17,10,25 3,17,10,25,这就是一次交换位置。

聪明的小杨想要知道:在老师每次点名一位新同学加入队伍后,在原有队伍的基础上,同学们最少要进行几次交换位置,才能完成老师按身高排序的要求。

输入格式

第一行一个整数 N N N,表示同学的数量
第二行 N N N 个用空格隔开的正整数,依次表示学号为 0 , 1 , 0,1, 0,1, , N − 1 ,N-1 ,N1 的同学的身高(不超过 2 , 147 , 483 , 647 2,147,483,647 2,147,483,647)。
第三行一个整数 M M M,表示老师点名的数量。
接下来 M M M 行,依次描述 M M M 次点名:每行一个整数 x x x 0 ≤ x < N 0 \le x<N 0x<N),表示要求学号为 x x x 的同学加入队伍。保证该名同学此前不在队伍中。

输出格式

输出 M M M 行,依次表示对于每次点名,同学们最少要进行几次交换位置,才能完成按身高排序的要求。

样例 #1

样例输入 #1

5
170 165 168 160 175
4
0
3
2
1

样例输出 #1

0
1
1
2

样例 #2

样例输入 #2

4
20 20 20 10
4
0
1
2
3

样例输出 #2

0
0
0
1

提示

对于所有的测试点,保证 1 ≤ M ≤ N ≤ 2000 1 \le M \le N \le 2000 1MN2000。对于 50 % 50\% 50% 的测试点,保证所有同学的身高互不相同。

AC代码(100分)

#include<bits/stdc++.h>
using namespace std;
/*思路: 
	本质是插入排序	
*/
int n,m,x,a[2010],b[2010];
int main(){
	cin>>n;
	for(int i=0;i<=n-1;i++) cin>>a[i];
	cin>>m;
	for(int i=0;i<=m-1;i++){
		cin>>x;
		int cnt=0;//统计本轮交换次数 
		b[i]=a[x];
		for(int j=0;j<=i-1;j++){
			if(b[j]>b[i]){
				swap(b[j],b[i]);
				cnt++;
			}
		}
		cout<<cnt<<endl;
		
	}
	return 0;
}

文末彩蛋:

点击王老师青少年编程主页有更多精彩内容


http://www.kler.cn/a/502614.html

相关文章:

  • type 属性的用途和实现方式(图标,表单,数据可视化,自定义组件)
  • 分多个AndroidManifest.xml来控制项目编译
  • 《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统
  • fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)
  • Edge浏览器网页设置深色模式/暗模式
  • 【文件锁】多进程线程安全访问文件demo
  • Lianwei 安全周报|2025.1.13
  • 网络协议ip表示,网络协议中ip表示
  • 浅谈云计算09 | 服务器虚拟化
  • 代码随想录算法【Day18】
  • 《大型语言模型与强化学习的融合:探索问题的新解决方案与开源验证需求》
  • 昵称 校验
  • 深度可分离卷积在卷积神经网络中的作用
  • mobaxterm内置编辑器中文出现乱码如何解决:直接更换编辑器为本地编辑器
  • 数据处理之计算文本相似度|余弦相似度|欧氏距离
  • 从 PostgreSQL 中挽救损坏的表
  • Linux-shell练习
  • Kafka集群数据完整性保障:有效防止数据丢失
  • Bert及Deberta、Roberta的简介
  • mongoDB全量备份和恢复
  • 前端笔记----
  • PPT素材免费下载
  • 利用ffmpeg将视频转为m3u8并加密
  • 通过Apache、Nginx限制直接访问public下的静态文件
  • 数据结构与算法之栈: LeetCode 71. 简化路径 (Ts版)
  • 介绍PyTorch张量