CF1148C C. Crazy Diamond

题目链接

题意:给定一个数组p长度为n按照规则对下标满足2 * abs(i - j) >= n进行交换,最后使数组不递减。输出用的交换次数和每次交换的下标。(交换次数不能超过5*n次)

题解:

默认i < j,否则交换
abs(i - j) >= n / 2直接交换
i > n / 2也就是说i - 1 >= n / 2,都和1交换需要3次交换。
i <= n / 2并且j <= n / 2也就是说j + n / 2 <= n
则都可以和n交换,需要交换3次
否则i和n交换后j和1交换之后1和n交换之后 再次i和n、j和i交换需要交换5次

#include <bits/stdc++.h>
using namespace std;#define fi first
#define se second
#define ve vector
#define all(x) (x).begin() + 1, (x).end()
#define rep(i, a, b) for (int i = a; i < b; i++)
#define per(i, a, b) for (int i = a; i >= b; i--)
using pi = pair<int, int>;#define maxn 300005
int n;
ve<int> a, b;
int otp[maxn * 10][2], cnt = 0;inline int red() {int x;cin >> x;return x;
}void sw(int i, int j) {otp[cnt][0] = i, otp[cnt++][1] = j;swap(a[i], a[j]);swap(b[a[i]], b[a[j]]);
}void cal(int i, int j) {if (i == j) {return;}if (i > j) {swap(i, j);}if (abs(i - j) >= n / 2) {sw(i, j);return;}if (i <= n / 2) {if (j <= n / 2) {sw(i, n), sw(j, n), sw(i, n);} else {sw(j, 1), sw(i, n), sw(1, n), sw(j, 1), sw(i, n);} } else {sw(j, 1), sw(1, i), sw(j, 1);}
} void solve() {n = red();a.resize(n + 1), b.resize(n + 1);rep(i, 1, n + 1) {a[i] = red();b[a[i]] = i;}rep(i, 1, n + 1) {cal(i, b[i]);}cout << cnt << '\n';rep(i, 0, cnt) {cout << otp[i][0] << ' ' << otp[i][1] << '\n'; }}int main() {ios_base::sync_with_stdio(false);cin.tie(nullptr);int t = 1;while (t--) {solve();}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于异构图的大规模微服务系统性能问题诊断

简介&#xff1a;本文介绍由南开大学、清华大学、腾讯、国家超级计算天津中心共同合作的论文&#xff1a;基于异构图的大规模微服务系统性能问题诊断。该论文已被IEEE Transactions on Services Computing期刊录用 论文标题&#xff1a;Diagnosing Performance Issues for Lar…

docker删除所有容器

笔记 要使用 Docker 删除所有容器&#xff08;无论是停止的还是正在运行的&#xff09;&#xff0c;可以按照以下步骤操作&#xff1a; 1. **删除所有正在运行的容器**&#xff1a; 首先&#xff0c;您需要停止所有正在运行的容器。可以使用以下命令&#xff1a; dock…

MATLAB分类与判别模型算法:K-近邻法(KNN)分类代码 【含Matlab源码 MX_001期】

算法简介&#xff1a; K-近邻法&#xff08;KNN&#xff09;是一种简单而有效的分类算法&#xff0c;也可用于回归问题。它的基本原理是根据待分类样本与训练样本的距离&#xff0c;选取最近的K个样本进行投票决定分类。该算法无需训练过程&#xff0c;而是利用训练数据集直接…

数据结构与算法-反转单链表

数据结构与算法-反转单链表 大家好&#xff0c;欢迎回到我们的算法学习系列。今天&#xff0c;我们将探讨一个在算法面试中非常经典的问题——反转单链表。 什么是单链表&#xff1f; 在介绍问题之前&#xff0c;我们先简单了解一下单链表。单链表是一种线性数据结构&#x…

气缸前端锁紧技术探讨:从四个方面、五个方面、六个方面和七个方面深度解析

气缸前端锁紧技术探讨&#xff1a;从四个方面、五个方面、六个方面和七个方面深度解析 在工业自动化领域&#xff0c;气缸作为关键的执行元件&#xff0c;其前端锁紧技术的稳定性与可靠性直接影响到整个系统的运行效率。本文将从四个方面、五个方面、六个方面和七个方面&#…

python 面对对象 类 补充

isinstance isinstance()&#xff1a;判断一个实例化对象是否属于这个类的&#xff0c;isinstance(对象&#xff0c;类) class Man():passclass Women():passa Man()print(isinstance(a, Man)) # True print(isinstance(a, Women)) # False 类的属性操作 getattr() 获…

小白windows系统从零开始本地部署大模型全记录

大家好&#xff0c;最近两年大语言模型风靡全球&#xff0c;最近&#xff0c;不少开源大模型&#xff0c;将模型部署到自己的电脑上&#xff0c;用个性化的数据微调想必是不少人的愿望&#xff0c;这次&#xff0c;让我来分享从hugging face上下载部署chatglm3-6b中的经验。 1.…

自动控制: 最小二乘估计(LSE)、加权最小二乘估计(WLS)和线性最小方差估计

自动控制&#xff1a; 最小二乘估计&#xff08;LSE&#xff09;、加权最小二乘估计&#xff08;WLS&#xff09;和线性最小方差估计 在数据分析和机器学习中&#xff0c;参数估计是一个关键步骤。最小二乘估计&#xff08;LSE&#xff09;、加权最小二乘估计&#xff08;WLS&…

conda环境里安装ffmpeg

遇到的问题 在执行脚本的时候提示&#xff1a; /home/xxx/anaconda3/envs/llm-asr/lib/python3.9/site-packages/pydub/utils.py:170: RuntimeWarning: Couldnt find ffmpeg or avconv - defaulting to ffmpeg, but may not workwarn("Couldnt find ffmpeg or avconv - …

wifi贴码推广哪家靠谱?

如今越来越多的人想轻资产创业&#xff0c;WIFI贴码是共享行业最无成本的创业项目了&#xff0c;而在选择厂商的时候&#xff0c;大家就想要知道哪家公司靠谱&#xff0c;更好、更便宜、可靠。那么wifi贴码推广哪家靠谱&#xff1f;别急&#xff0c;下面小编将带你一起了解。 目…

OpenAI开始训练新的前沿模型——但GPT-5至少在90天内不会推出

ChatGPT 制造商 OpenAI 今早宣布&#xff0c;已开始训练其新的“前沿模型”&#xff0c;并成立了一个新的安全委员会&#xff0c;由现任董事会成员 Bret Taylor&#xff08;OpenAI 董事会主席兼客户服务初创公司 Sierra AI 联合创始人、前谷歌地图负责人和前 Facebook 首席技术…

BGP路由策略实验

一、实验拓扑 二、IP分配(骨干) R1&#xff1a; 0/0/0 15.0.0.1 24 0/0/1 18.0.0.2 24 0/0/2 19.0.0.1 24 R2: 0/0/0 16.0.0.1 24 0/0/1 15.0.0.2 24 R3: 0/0/0 17.0.0.2 24 0/0/1 18.0.0.1 24 R4: 0/0/0 16.0…

元宇宙vr工业产品展示空间降低研发成本

元宇宙产品虚拟展厅搭建编辑器为您提供了一个自助式元宇宙场景搭建的绝佳平台。无论您是设计公司、摄影公司、营销公司还是教育机构&#xff0c;我们都能为您量身打造专属的元宇宙解决方案&#xff0c;满足您的多样化需求。 元宇宙产品虚拟展厅搭建编辑器具备强大的3D编辑功能&…

蓝牙设备中的UUID

文章目录 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址&#xff0c;相对固定。iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 …

如何成为AI工程师

AI工程师&#xff08;不是打标员&#xff09;已经成为新一代的热门岗位&#xff08;高薪、有前景&#xff09;&#xff0c;无论你是计算机科学专业的学生&#xff0c;还是已经在其他技术领域工作的专业人士&#xff0c;可以通过以下几点来大概了解如何成为AI工程师。 1. 技术技…

【吊打面试官系列】Java高并发篇 - ThreadLocal 是什么?有什么用?

大家好&#xff0c;我是锋哥。今天分享关于 【ThreadLocal 是什么&#xff1f;有什么用&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; ThreadLocal 是什么&#xff1f;有什么用&#xff1f; ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该…

dust3r部署踩坑全记录

目前dust3r是三维重建最新最好的技术&#xff0c;运用了ViT编码器、Transformer、注意力机制、回归等技术&#xff0c;无需相机参数标定。 但是我部署过程中有很多坑&#xff0c;记录一下。 1.OSError: CUDA_HOME environment variable is not set. Please set it to your CU…

Itme4 对象使用前进行初始化

fun(){ int a; printf("%d\n", a); cout << a << endl; //会报错 使用了未初始化的变量a } //若a是全局变量则不会报错 会默认初始化为0 在对象中优先使用初始化列表&#xff1a; ABEntry::ABEntry(const std::string& name, const std::string&…

数字工厂管理系统可以和哪些软件集成

随着工业4.0时代的到来&#xff0c;数字工厂管理系统已成为制造业转型升级的核心驱动力。数字工厂管理系统通过集成各种软件和技术&#xff0c;实现了生产过程的数字化、网络化和智能化&#xff0c;大大提高了生产效率和管理水平。本文将探讨数字工厂管理系统可以与哪些软件集成…

Axure RP软件汉化操作步骤

随着互联网产业的发展&#xff0c;设计师已经成为一个越来越受欢迎的职业&#xff0c;设计软件已经成为设计师必不可少的工具。说到设计软件&#xff0c;不得不说的是 Axure rp &#xff0c;越来越多的设计师使用它来设计产品原型&#xff0c;作为美国 Axure Software Solution…