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

构造+模拟,CF1148C. Crazy Diamond

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

Problem - 1148C - Codeforces


二、解题报告

1、思路分析

题目提示O(5n)的解法了,事实上我们O(3n)就能解决,关键在于1,n的处理

我们读入数据a[],代表初始数组,p[i]代表 i 的下标

如果p[i] != i

说明需要交换

a[p[i]] 一定能跟a[1]或者a[n]交换, a[i]也一定能跟1或n交换

假设 a[i]  的可交换位置为x,a[p[i]] 的可交换位置为y(x、y只可能为1、n)

那么我们使得元素i从p[i] -> y -> x -> i 就在3步之内让i到达了下标i

此时a[1] 和 a[n]可能不满足a[1] = 1, a[n] = n

事实上我们将每个元素调整完后再调整1和n即可

这也是为什么能从O(5n)优化到O(3n)

 

2、复杂度

时间复杂度: O(3n)空间复杂度:O(n)

3、代码详解

#include <bits/stdc++.h>
using PII = std::pair<int, int>;
const int N = 3e5 + 10;
int p[N], a[N], n, s;
std::vector<PII> path;void swap(int x, int y) {std::swap(p[a[x]], p[a[y]]);std::swap(a[x], a[y]);path.emplace_back(x, y);
}int main () {std::cin >> n;path.reserve(5 * n);for (int i = 1; i <= n; i ++ ) std::cin >> a[i], p[a[i]] = i;for (int i = 1; i <= n / 2; i ++ ) {if (p[i] != i) {if (p[i] <= n / 2) {swap(p[i], n);swap(i, n);}else {swap(1, p[i]);swap(1, n);swap(i, n);}}}for (int i = n / 2 + 1; i <= n; i ++ ) {if (p[i] != i) {if (p[i] > n / 2) {swap(1, p[i]);swap(1, i);}else {swap(p[i], n);swap(1, n);swap(1, i);}}}if (a[1] != 1) swap(1, n);std::cout << path.size() << '\n';for (auto [x, y] : path) std::cout << x << " " << y << '\n';return 0;
}

相关文章:

构造+模拟,CF1148C. Crazy Diamond

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1148C - Codeforces 二、解题报告 1、思路分析 题目提示O(5n)的解法了&#xff0c;事实上我们O(3n)就能解决&#xff0c;关键在于1&#xff0c;n的处理 我们读入数据a[]&#xff0c;代表初始数组…...

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目&#xff0c;如下&#xff1a; 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…...

代码随想录二刷 Day05 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和,454.四数相加II,383. 赎金信

题目与题解 参考资料&#xff1a;哈希表理论基础 Tips&#xff1a; 一般哈希表都是用来快速判断一个元素是否出现集合里哈希表生成原理&#xff1a;先通过哈希函数将变量映射为hashcode&#xff0c;如果二者hashcode相同&#xff0c;再通过哈希碰撞方法&#xff08;拉链法&…...

2024年四川省三支一扶报名流程图解✅

2024年四川省三支一扶报名流程图解✅ &#x1f534;时间安排 1、报名时间&#xff1a;5月31日—6月4日17:00 2、资格初审时间&#xff1a;5月31日—6月5日17:00 3、准考证打印时间&#xff1a;6月25日—6月29日 4、笔试时间&#xff1a;6月30日 5、笔试成绩&#xff1a;7…...

js Dom基础

获取元素 1、getElementById() 通过id属性获取一个元素节点对象 <div id"div1"></div> <script> var div1 document.getElementById(div1) </script> 2、 getElementsByTagName()可以根据标签名来获取一组元素节点对象 这个方法会给我们返…...

pytest识别测试用例的机制以及和unittest的区别

pytest识别测试用例的机制 文件 以test_开头或以_test结尾的python文件&#xff0c;即test_xxx.py或xxx_test.py类&#xff0c;在第一点识别到的文件中的类&#xff0c;且满足一下任一条件&#xff1a; 1&#xff09;以Test_开头&#xff0c;且没有__init__()初始化函数的类&a…...

民国漫画杂志《时代漫画》第17期.PDF

时代漫画17.PDF: https://url03.ctfile.com/f/1779803-1248612629-85326d?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;...

[AIGC] Spring Boot 2 自定义 Starter 指南

Spring Boot 包含一系列的 “Starter POMs”&#xff0c;它们都是一些方便的依赖描述符&#xff0c;你可以在你的应用中导入。在一些情况下&#xff0c;你可能想创建自己的自定义 starter。以下是创建自己的 Spring Boot Starter 的步骤。 文章目录 1. 创建基本的 Maven 项目2.…...

HCIP综合实验命令

目录 一、配置IP地址 二、配置DHCP 三、配置静态路由&#xff08;内网通&#xff09; 四、配置缺省路由 &#xff08;外网通&#xff09; 五、配置缺省 &#xff08;全网通&#xff09; 六、防环配置 七、配置远程登录 八、修改优先级 九、配置MP-GROUP 十、配置ppp进…...

JS移动端设置mouseover,mouseleave有效么

在移动设备的浏览器环境中&#xff0c;mouseover 和 mouseleave 事件的行为与桌面浏览器有所不同&#xff0c;主要是因为移动设备的交互方式主要是基于触摸的&#xff0c;而不是基于鼠标的。 在移动设备上&#xff0c;当用户触摸屏幕时&#xff0c;通常会触发 touchstart 事件…...

IAR9.30安装和注册相关

下载解压licpatcher64工具&#xff0c;把licpatcher64.exe拷贝到IAR的安装目录中双击运行。 示例IAR9.30.1默认安装如下如下&#xff0c;一共三个分别拷贝运行&#xff0c;不要遗漏。 C:\Program Files\IAR Systems\Embedded Workbench 9.1\arm\bin C:\Program Files\IAR Syst…...

HTTP Digest Access Authentication Schema

HTTP Digest Access Authentication Schema 背景介绍ChallengeResponse摘要计算流程总结参考 背景 本文内容大多基于网上其他参考文章及资料整理后所得&#xff0c;并非原创&#xff0c;目的是为了需要时方便查看。 介绍 HTTP Digest Access Authentication Schema&#xff…...

MySql超大Sql文件导入效率优化

对于MySQL中超大SQL文件的导入&#xff0c;效率优化是至关重要的&#xff0c;因为不当的操作可能导致导入过程耗时过长&#xff0c;甚至失败。以下是一些建议来优化MySQL超大SQL文件的导入效率&#xff1a; 调整max_allowed_packet参数&#xff1a; 这个参数定义了MySQL服务器和…...

【leetcode1944--队列中可以看到的人数】

有n人排成一个队列&#xff0c;从左到右编号为0到n-1&#xff0c;height数组记录每个人的身高&#xff0c;返回一个数组&#xff0c;记录每个人能看到几个人。 类比&#xff1a;山峰问题&#xff0c;高的后面的矮的看不见。 从后往前&#xff0c;最后一个元素入栈&#xff0c…...

基于51单片机的室内空气质量检测-仿真设计

本设计是基于单片机的空气质量检测设计&#xff0c;主要实现以下功能&#xff1a; 可实现通过SGP30测量二氧化碳及甲醛浓度&#xff0c;当超过设置的最大值时&#xff0c;进行报警及通风和净化空气处理 可实现通过MQ-4测量甲烷浓度&#xff0c;当超过设置的最大值时&#xff0…...

day22二叉树part08 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

**235. 二叉搜索树的最近公共祖先 ** 这里利用上了二叉搜索树的特性&#xff0c;从上到下遍历&#xff0c;最近的公共祖先一定是满足p->val < root->val < q->val的 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, Tr…...

【Linux】Linux环境基础开发工具_2

文章目录 四、Linux环境基础开发工具2. vimvim的常见模式 未完待续 四、Linux环境基础开发工具 2. vim vim 是Linux下的一款 多模式编辑器 &#xff0c;可以用来写代码&#xff0c;是 vi 的升级版。 此时无法输入&#xff0c;需要切换模式。 如上图&#xff0c;i 就是切换成…...

长方形边框 上方中间有缺口 css

<div class"text_6">大234234师掌4234柜</div><div class"text-wrapper_1"><span class"paragraph_1">四川慧创云戈科技有限公司推出的“大师掌柜”&#xff0c;是一个以餐饮外卖为切入口&#xff0c;专注实体小店新零售…...

2024-05-29 架构-程序设计-思考

摘要: 最近在抽出时间做一个数据库的driver, 其中有些问题驱动的软件代码的思考&#xff0c;是很值得回味的。 做的系统&#xff0c;所思考的问题&#xff0c;所设计的解决方案&#xff0c;其实都是可以看作是对解决问题方式。而不仅仅是某个类库的API的使用&#xff0c;某个…...

关于网络的基础知识

大家好&#xff0c;在当今数字时代&#xff0c;网络已经成为我们生活中不可或缺的一部分&#xff0c;它连接着世界的每一个角落&#xff0c;让信息、资源和人们彼此之间无阻碍地交流和共享。然而&#xff0c;对于许多人来说&#xff0c;网络仍然是一个神秘而复杂的领域&#xf…...

BG3ModManager终极指南:如何轻松管理博德之门3模组避免游戏崩溃?

BG3ModManager终极指南&#xff1a;如何轻松管理博德之门3模组避免游戏崩溃&#xff1f; 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager BG3ModMana…...

LangChain集成MCP协议:构建模块化AI应用的新范式

1. 项目概述&#xff1a;当LangChain遇见MCP&#xff0c;构建下一代AI应用的新范式如果你最近在捣鼓LangChain&#xff0c;想给AI应用加点“料”&#xff0c;比如让它能实时查询数据库、调用外部API&#xff0c;甚至控制智能家居&#xff0c;那你大概率会遇到一个核心痛点&…...

模型运行记录

1753...

3分钟快速上手:如何用res-downloader高效下载视频号资源

3分钟快速上手&#xff1a;如何用res-downloader高效下载视频号资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在当今数…...

从数据中心视角聊token

“我爱你”被AI拆解成了3个tokens&#xff0c;“I love U”也同样被AI拆解成了3个tokens&#xff0c;AI将人类的语言拆解到可被数据分析的最小单位&#xff0c;叫做token&#xff0c;中文是词元&#xff0c;AI通过数据模型的分析&#xff0c;又将无数的token组成了答复反馈给用…...

Python蒙特卡洛树搜索实战:手把手教你调参,让黑白棋AI从‘菜鸟’变‘高手’

Python蒙特卡洛树搜索实战&#xff1a;从调参到策略优化的完整指南 蒙特卡洛树搜索&#xff08;MCTS&#xff09;作为近年来最成功的游戏AI算法之一&#xff0c;已经在围棋、黑白棋等策略游戏中展现出惊人的实力。但很多开发者在实现基础版本后&#xff0c;常常陷入性能瓶颈——…...

网站国产化改造怎么做?深度解读国产化替代路径与CMS推荐

在近年来科技领域的舆论场中&#xff0c;“国产化”无疑是出现频率最高的关键词之一。从芯片到操作系统&#xff0c;从数据库到办公软件&#xff0c;再到企业对外展示的门户——网站&#xff0c;国产化替代已从“可选项”变成了很多行业的“必答题”。但国产化仅仅是“换个牌子…...

可编程逻辑器件(PLD/CPLD/FPGA)核心原理、选型指南与EDA设计实战

1. 项目概述&#xff1a;从怀旧到硬核&#xff0c;聊聊可编程逻辑的“前世今生”那天在网上闲逛&#xff0c;本想找点微马赛克艺术&#xff08;Micromosaic&#xff09;的制作视频&#xff0c;结果算法一个拐弯&#xff0c;把我带回了上世纪七八十年代的《大青蛙布偶秀》&#…...

告别答辩PPT焦虑:百考通AI如何帮你高效搞定毕业答辩

简洁专业的PPT模板&#xff0c;精准的AI内容生成&#xff0c;在线编辑与一键美化——让毕业答辩的最后一步走得更从容。 又到了一年毕业季&#xff0c;当论文终于定稿&#xff0c;你是否发现自己又面临一座新的大山——毕业答辩PPT&#xff1f;面对几十页的论文文档&#xff0c…...

WarcraftHelper:3步解决魔兽争霸3卡顿与兼容性问题终极指南

WarcraftHelper&#xff1a;3步解决魔兽争霸3卡顿与兼容性问题终极指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争霸3在现代电…...