构造题练习CF2052A. Adrenaline Rush

news/2025/3/1 18:47:25/文章来源:https://www.cnblogs.com/SteinsGateSg/p/18745275

构造题练习\(CF2052A.\ Adrenaline\ \ Rush\)

链接

思路

  1. 遇到一个逆序对要完成一次超车,遇到一个正序对可以看成先超车然后又被超回来了,所以完成了两次超车,最多的超车次数很好求

  2. 比较难的是按顺序求出超车的序列

  3. 一个想法是按照最终的序列从最后一辆车开始往前处理,找到它在最初序列中的位置一直向前超车,到达第一个,然后被别的车超到达它应该在的位置

  • 为什么要从最后一个开始处理呢?这样处理其他车的时候就不用考虑它的影响了
  • 过程中需要记录每一个车的实时位置,和每一个位置是哪一辆车
  • 举个例子
    1. 给定序列 1 2 4 3,根据题意每辆车的初始位置1 2 3 4
    2. 从最后一个开始处理,最后一个位置是车3,它初始位置是位置3
    3. 那么从位置3往前面超,一直到第一个 3 1 2 4,然后被后面的车超到应在的位置 1 2 4 3
    4. ......

代码

#pragma optimize GCC(2)
#pragma optimize GCC(3)
#pragma optimize GCC("Ofast")
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define lowbit(x) x & -x
using i64 = long long;
using u64 = unsigned long long;
using ld = long double;
const int maxn = 2e5 + 5;
const int inf = 0x7f7f7f7f;
const int mod = 1e9 + 7;void solve()
{int n = 0;std::cin >> n;std::vector<int> nums(n + 1, 0);std::vector<int> pos(n + 1, 0), mp(n + 1, 0);// pos[i], i这个数在哪一个位置// mp[i], i这个位置是哪一个数for (int i = 1; i <= n; i++){std::cin >> nums[i];pos[i] = i;mp[i] = i;}std::vector<std::pair<int, int>> res;for (int to = n; to >= 1; to--){int t = nums[to];int p = pos[t];for (int i = p - 1; i >= 1; i--){res.push_back({t, mp[i]});pos[t] = i;pos[mp[i]] = i + 1;mp[i + 1] = mp[i];mp[i] = t;}for (int i = 2; i <= to; i++){res.push_back({mp[i], t});pos[t] = i;pos[mp[i]] = i - 1;mp[i - 1] = mp[i];mp[i] = t;}}std::cout << res.size() << endl;for (auto [x, y] : res){std::cout << x << " " << y << endl;}
}signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr); std::cout.tie(nullptr);//freopen("out.txt", "w", stdout);int t = 1;// std::cin >> t;while(t--){solve();}return 0;
}

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

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

相关文章

autojs通过vscode写好的文件上传的手机,并打包apk

1.安装vscode 2.下载autojs插件和chinese插件3.启动autojs插件,手机才可以链接 (链接时输入的是手机的ip地址)4.上传到手机5.打包本文来自博客园,作者:六月OvO,转载请注明原文链接:https://www.cnblogs.com/chenlifan/p/18745272

Windows 提权-UAC 绕过

本文通过 Google 翻译 UAC-Bypass – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航0 前言 1 场景一:枚举得到存储的管理员凭证(GUI 环境)1.1 使用 netplwiz.exe 帮助主题绕过 UAC2 场景二:枚举得到…

三剑客与正则系列-正则表达式

1.注意事项正则符号都是英文符号,避免使用中文符号 推荐使用grep/egrep命令,默认设置了别名,自动加上颜色 http://nbre.oldboylinux.cn/ 分析正则与正则匹配到的内容. 其他坑.# "" . #‘’ ”“ 。alias grep=grep color=auto alias egrep=egrep color=auto2.符号概述…

【凸优化笔记2】-凸函数、下水平集、范数

转自:https://zhuanlan.zhihu.com/p/102098039 1. 凸函数 1.1 凸函数定义 一个函数𝑓:𝑅𝑛→𝑅是凸的,如果定义域𝑑𝑜𝑚𝑓是凸集,并且对于所有𝑥,𝑦∈𝑑𝑜𝑚𝑓,𝜃∈[0,1],都有: 𝑓(𝜃𝑥+(1−𝜃)𝑦)≤𝜃𝑓(𝑥)+(1−𝜃)𝑓…

使用AI后为什么思考会变得困难?

使用AI后为什么思考会变得困难? 我总结了四篇近期的研究论文,来展示AI是如何以及为什么侵蚀我们的批判性思维能力。作者使用AI制作的图像前言:作者在这篇文章中,借AI技术的崛起,揭示了一场悄然发生的思想博弈。表面上,AI为我们带来了前所未有的效率与便捷,但在无形之中,…

44页太阳花绘制

点击查看代码 from turtle import * color(red, yellow) begin_fill() while True:forward(200)left(170)if abs(pos()) < 1:break end_fill() done()

leetcode hot 15

解题思路:思路还是比较清晰,先按照起始位置排序,然后再逐个遍历,根据起始位置与前一个结束位置进行比较,两种情况进行处理即可(这边代码比较麻烦因为前面list泛型用错了) import java.util.Arrays; class Solution {public int[][] merge(int[][] intervals) {List<Lis…

WgelCTF打靶笔记(2)

参考视频:https://www.bilibili.com/video/BV1itwgeHEEk/?spm_id_from=333.1387.upload.video_card.click&vd_source=e948147c25027ef3216b5c376b31fc96扫描dirb: 发现.ssh有一个id_rsa文件,即ssh连接私钥,右键下载到本地 ssh私钥: SSH:用于安全的连接到远程服务器 …

44页五角星绘制

点击查看代码 from turtle import * fillcolor("red") begin_fill() while True:forward(200)right(144)if abs(pos()) < 1:break end_fill()

Go1.24版本终于来了!各位开发者,准备好迎接这些激动人心的新功能了吗?让我们一起来探讨下Go1.24中有哪些精彩的亮点?

前言 Gopher们,Go 1.24.0 正式发布了!与 Go 1.23.0 相比,这个版本带来了众多改进。让我们一同看看 Go 1.24.0 都有哪些新变化吧! 在 Windows 下,请在 https://github.com/voidint/g/releases 下载适合您系统的版本。例如,如果您的系统是 64 位的,可以下载 g1.7.0.window…

FastAPI极速入门:15分钟搭建你的首个智能API(附自动文档生成)

title: FastAPI极速入门:15分钟搭建你的首个智能API(附自动文档生成)🚀 date: 2025/3/1 updated: 2025/3/1 author: cmdragon excerpt: 用虚拟环境打造纯净开发空间的3种方法 只需5行代码实现智能API端点 自动生成媲美大厂的交互式API文档 解决新手必踩的9大坑点(含依赖…

rocketmq不同服务使用相同消费者组和生产者组的问题

之前多个服务使用同一个消费者组和生产者组procfg-consumer-group和procfg-produce-group,然后共享同一个Topic。 时不时会有问题,例如主控服务版本更新之后虽然消息发出来了,但是终端接收不到,消息有时会有CONSUMED_BUT_FILTERED(被过滤)个人理解的原因是多个服务用同一个…