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

[12月考试] E

[12月考试] E

题目描述

给定 nnn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an,小 E 可以进行若干次交换,每一次可以交换两个相邻的整数。

求小 E 至少要交换多少次,才可以让 a1a_1a1nnn 个数里的最小值,ana_nannnn 个数里的最大值,最小值和最大值可能不止一个。

对于所有数据,2≤n≤1052\leq n\leq 10^52n1051≤ai≤1091\leq a_i\leq 10^91ai109

输入格式

输入共 222 行。

111 行输入 111 个正整数 nnn

222 行输入 nnn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an

输出格式

输出共 111111 个整数,表示最小的交换次数。

样例 #1

样例输入 #1

5
1 2 3 4 5

样例输出 #1

0

样例 #2

样例输入 #2

7
4 4 4 3 2 2 2

样例输出 #2

7

提示

数据范围

对于 50%50\%50% 的数据,n,ai≤6n,a_i\leq 6n,ai6

对于额外 20%20\%20% 的数据,ai≤2a_i\leq 2ai2

对于所有数据,2≤n≤1052\leq n\leq 10^52n1051≤ai≤1091\leq a_i\leq 10^91ai109

🧠题目核心

  • 目标是让第一个元素是最小值之一,最后一个元素是最大值之一。
  • 可以交换相邻元素,每交换一次算1次。
  • 求最小交换次数。

✅问题点分析

  • 把最小值元素移动到第一个位置,交换次数 = 该元素的当前索引(因为每次交换往前移动1位)。
  • 把最大值元素移动到最后一个位置,交换次数 = (末尾位置索引 - 该元素当前索引)。

✅重要细节

  • 最小值选最左侧的最小值,因为想往前移,最左侧的最小值移动次数最少。
  • 最大值选最右侧的最大值,因为想往后移,最右侧的最大值移动次数最少。

✅特殊情况

  • 如果最大值的原始索引小于最小值的原始索引,则两者移动时不会发生冲突,交换次数直接相加即可。
  • 如果最大值的索引大于最小值索引,则在移动过程中,两者可能会“穿插”,相当于少交换一次,所以总次数要减1。

🚀 C++实现

#include <iostream>
using namespace std;int main() {int n;cin >> n;int a[100000];int minVal = 1000000001;int maxVal = -1;int minPos = -1; // 最左侧最小值位置int maxPos = -1; // 最右侧最大值位置for (int i = 0; i < n; ++i) {cin >> a[i];if (a[i] < minVal) {minVal = a[i];minPos = i;}if (a[i] >= maxVal) {maxVal = a[i];maxPos = i;}}int ans = minPos + (n - 1 - maxPos);if (minPos > maxPos) ans--;cout << ans << "\n";return 0;
}
http://www.xdnf.cn/news/1218871.html

相关文章:

  • 进程控制:从创建到终结的完整指南
  • 【Django】-1- 开发项目搭建
  • MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库
  • 抓大鹅小游戏微信抖音流量主小程序开源
  • HUD抬头显示器-杂散光测试设备 太阳光模拟器
  • AI学习笔记三十三:基于Opencv的单目标跟踪
  • 对git 熟悉时,常用操作
  • day36 力扣1049.最后一块石头的重量II 力扣494.目标和 力扣474.一和零
  • 【LeetCode 热题 100】4. 寻找两个正序数组的中位数——(解法一)线性扫描
  • [论文阅读] 人工智能 + 软件工程 | KnowledgeMind:基于MCTS的微服务故障定位新方案——告别LLM幻觉,提升根因分析准确率
  • SFT最佳实践教程 —— 基于方舟直接进行模型精调
  • 构型空间(Configuration Space,简称C-space)
  • 全基因组关联分析(GWAS)中模型参数选择:MLM、GLM与FarmCPU的深度解析
  • 数据库中使用SQL作分组处理01(简单分组)
  • 【worklist】worklist的hl7、dicom是什么关系
  • 学以致用——用Docker搭建ThinkPHP开发环境
  • 深入探索Weaviate:构建高效AI应用的数据库解决方案
  • 《人工智能导论》(python版)第2章 python基础2.2编程基础
  • 大模型流式长链接场景下 k8s 优雅退出 JAVA
  • PHP 与 MySQL 详解实战入门(1)
  • 零基础构建MCP服务器:TypeScript/Python双语言实战指南
  • 在幸狐RV1106板子上用gcc14.2本地编译安装samba-4.22.3服务器,并且支持XP系统访问共享文件夹
  • 基于单片机胎压检测/锅炉蒸汽压力/气压检测系统
  • LCM中间件入门(2):LCM核心实现原理解析
  • InfluxDB 与 Python 框架结合:Django 应用案例(二)
  • kmp复习,需要多看多练
  • Kubernetes 应用部署实战:为什么需要 Kubernetes?
  • InfluxDB 与 Python 框架结合:Django 应用案例(三)
  • Java Matcher对象中find()与matches()的区别
  • QT6 Python UI文件转换PY文件的方法