ARC180 --- B - Improve Inversions 题解

news2025/1/11 7:53:46

B - Improve Inversions :

题目大意:

思路解析:

假设现在出现了这样的情况  ......6 ......... 4 3 2 1,可以发现最好的交换方式为 6 和 4交换,然后4 3交换,然后3和2交换,然后2和1交换得到  ......1 ......... 6 4 3 2,那我们考虑6还有没有可能和4 3 2进行交换。我们可想到如果他能和 4 3 2进行交换那么最好方案会变为 2 6 4 3.那么我们可以想到其实在最初情况下 4可以和 3 2 1进行交换,得到 假设现在出现了这样的情况  ......6 ......... 1 4 3 2,可以发现无论是4还是6先交换最优情况都是相同的,那么我应该从1 到 n开始考虑它能进行的最优交换。

代码实现:

#include <bits/stdc++.h>


using i64 = long long;

struct node
{
    int l, r;
};

void solve() {
    int n, k;
    std::cin >> n >> k;
    std::vector<int> p(n+1), id(n+1);
    for(int i = 1; i <= n; i++){
        std::cin >> p[i];
        id[p[i]] = i;
    }
    std::vector<node> ans;
    for(int i = 1; i <= n; i++){
        int v = id[i];
        std::vector<int> t;
        for(int j = v + k; j <= n;j++){
            if (p[j] < i) t.push_back(p[j]);
        }
        std::sort(t.begin(), t.end());
        for(int i = t.size() - 1; i >= 0; i--){
            int x = id[t[i]];
            ans.push_back({v, x});
            std::swap(id[p[v]], id[p[x]]);
            std::swap(p[v], p[x]);
        }
    }
    std::cout << ans.size() << "\n";
    for(int i = 0; i < ans.size(); i++){
        std::cout << ans[i].l << " " << ans[i].r << "\n";
    }

}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    //std::cin >> t;

    while (t--) {
        solve();
    }
    

    return 0;
}

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

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

相关文章

工业智能网关的功能特点有哪些?工业智能网关在工业企业的应用-天拓四方

随着工业4.0时代的到来&#xff0c;数字化转型已成为工业企业提升竞争力、实现可持续发展的必经之路。在这一过程中&#xff0c;工业智能网关以其强大的连接、数据处理和安全防护能力&#xff0c;成为推动工业数字化转型的关键力量。本文将深入探讨工业智能网关的功能特点、应用…

图像基础知识入门【图像概念不同图像格式】

图像基础知识入门【图像概念&不同图像格式】 最近有在处理图像转换&#xff0c;因此稍微补足了一下图像相关知识&#xff0c;特在此记录。下面汇总是我根据自己理解和网上查阅资料而来。如有错误&#xff0c;欢迎大家指正。 1 基础概念 像素/分辨率 像素(Pixel)&#xff…

【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出

文章目录 前言增加守护进程1. 编写监控脚本2. 创建 systemd 服务文件3. 启动并启用服务4. 验证服务是否运行注意事项 如何修改守护进程1. 修改监控脚本2. 重新加载并重启服务3. 验证服务是否运行总结 如何设置一个日志文件来查看信息1. 修改监控脚本以记录日志方法一&#xff1…

使用机器学习,轻松预测问题产品,低成本高效率解决产品质量监测需求

01、案例说明 这个案例是一个酒厂&#xff0c;通过对其产品中不同化学性质的指标数值&#xff0c;寻找哪些是可能出现问题的产品。这是一个标准的离异点&#xff08;Outlier&#xff09;使用情形。 如果能够将在不同属性的一定范围之内的数据&#xff0c;作为判断的标准&#…

VSCode无法识别 node、npm

一、前提 电脑新安装了node.js&#xff0c;在cmd查看node和npm版本没有问题&#xff0c;但是在VSCode无法识别 1.cmd查看版本&#xff1a; 2.VSCode报错信息&#xff1a; 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果…

Windows电脑自建我的世界MC服务器并与好友远程联机游戏教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 br />个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…

08:结构体

结构体 1、为什么需要结构体2、如何定义结构体3、怎么使用结构体变量3.1、赋值和初始化3.2、结构体变量的输出 1、为什么需要结构体 为了表示一些复杂的事物&#xff0c;而普通的基本类型无法满足实际要求。什么叫结构体 把一些基本类型数据组合在一起形成的一个新的数据类型&…

Dns被莫名篡改的问题定位(笔记)

引言&#xff1a;最近发现用户的多台机器上出现了Dns被莫名修改的问题&#xff0c;从系统事件上看并未能正常确定到是那个具体软件所为&#xff0c;现在的需求就是确定和定位哪个软件具体所为。 解决思路&#xff1a; 首先到IPv4设置页面对Dns进行设置&#xff1a;通过ProcExp…

【MySQL备份】Percona XtraBackup基础篇

目录 1.关于Percona XtraBackup 2. Percona XtraBackup有哪些特点&#xff1f; 3.安装Percona XtraBackup 3.1.环境信息 3.2.安装步骤 4. xtrabackup内部流程图 5.Percona XtraBackup基础语法 5.1.全量备份 5.2.增量备份 5.2.1.基于全量备份的增量备份 5.2.2.基于前…

Java学习 (六) 面向对象--this、继承、方法重写、super

一、this 关键字 1、this 演示 vi Person.java public class Person {String name;int age;//显示声明构造器public Person(String s , int i){name s;age i;}public void setAge(int age){age age;}}vi PersonTest.java public class PersonTest {public static void m…

nextTick的应用和原理理解

一.代码的理解 <template><div id"app"><div></div><button click"fn" ref"box"> {{ name }}</button></div> </template><script> export default {data: function () {return {n…

【Linux】计算机网络基础:协议、分层结构与数据传输解析

文章目录 前言1. 认识“协议”1.1. 什么是协议1.2. 网络分层结构——网络 vs OS之间的关系1.2.1. 软案分层1.2.2. 网络分层(为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;) 1.3. 站在语言角度&#xff0c;重新理解协议 2. 网络传输基本流程3. 数据包封装和分用4. 网…

【剑指Offer系列】68-二叉树的最近公共祖先(哈希)

思路&#xff1a;使用map存储每个节点的父节点&#xff0c;则两个节点的最近公共祖先&#xff0c;即二者的最近父节点 1、中序遍历二叉树&#xff08;当前节点的下一个节点&#xff09; 2、记录每个节点的父节点 3、列出p的族谱、q的族谱 4、寻找二者最近的祖先 class Soluti…

安装 Docker 环境(通过云平台创建一个实例实现)

目录 1. 删除原有 yum 2. 手动配置 yum 源 3. 删除防火墙规则 4. 保存防火墙配置 5. 修改系统内核。打开内核转发功能。 6. 安装 Docker 7. 设置本地镜像仓库 8.重启服务 1. 删除原有 yum rm -rfv /etc/yum.repos.d/* 2. 手动配置 yum 源 使用 centos7-1511.iso 和 Xi…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天&#xff0c;p1-18总结&#xff0c;总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.genera…

安防监控视频平台LntonCVS视频融合共享平台水电站视频智能监控系统的设计与特点

水电站作为重要的能源基地&#xff0c;其安全运行对保障能源供应和社会稳定至关重要。然而&#xff0c;传统的人工监控方式存在高成本、监控范围有限和反应速度慢等问题。因此&#xff0c;引入先进的视频智能监控系统成为当务之急&#xff0c;以提高效率和安全性。 安徽羚通科技…

Anti-C-Myc Antibody (Chicken) - FITC Conjugated

C-myc基因是myc基因家族的重要成员之一&#xff0c;是一种可使细胞无限增殖&#xff0c;获永生化功能&#xff0c;促进细胞分裂的基因&#xff0c;c-myc基因与多种肿瘤发生发展有关。C-myc基因定位于染色体8q24、IgH、IgK、Igλ链的基因位点分别在14q32、2P13和 22q11&#xff…

SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

CVPR2024 香港理工大学&OPPO&bytedancehttps://github.com/cswry/SeeSR?tabreadme-ov-file#-licensehttps://arxiv.org/pdf/2311.16518#page5.80 问题引入 因为有些LR退化情况比较严重&#xff0c;所以超分之后的结果会出现语义的不一致的情况&#xff0c;所以本文训…