### 问题描述
- 给你两个数组,a数组里面是1 - 2n中的奇数任意顺序排列组成,b数组里面是1 - 2n中的奇数任意顺序排列组成。
- 问你最少需要多少次操作能让a的字典序小于b。
### 思路分析
- 首先我们要明确两个数组中的元素肯定不同,那么能造成两个数组的字典序大小的就只有两个数组第一个数的大小关系。所以我们只考虑第一个位置即可。
- 那么如何来求最少?我们可以想到的是如果把a,b数组全部都排序,最后得到的b数组中的每一个元素都会大于a数组中该位置及以前位置的元素。
- 另外,对于2,4,6...我们只需要考虑比它小的数在a数组中的位置即可(例如2看1,4看1,3,6看1,3,5)。
- 所以我们就可以用一个变量来储存每一个小于b当前位置的a所在位置下标的最小值,这样我们跑一遍b数组就可以得到答案,答案就是那个最小位置的下标加上当前遍历到的b数组中的元素下标相加减2即可。
### 代码如下
~~~cpp
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int pos[maxn * 2];
int a[maxn];
int b[maxn];
int main()
{
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        int t;
        cin >> t;
        while (t--)
        {
                int n;
                cin >> n;
                for (int i = 1; i <= n; i++)
                {
                        cin >> a[i];
                        pos[a[i]] = i;
                }
                for (int i = 1; i <= n; i++)
                {
                        cin >> b[i];
                        pos[b[i]] = i;
                }
                sort(a + 1, a + 1 + n);
                sort(b + 1, b + 1 + n);
                int mini = n;
                int ans = 2 * n;
                for (int i = 1; i <= n; i++)
                {
                        mini = min(mini, pos[a[i]]);
                        ans = min(ans, pos[b[i]] + mini - 2);
                }
                cout << ans << endl;
        }
        return 0;
}
~~~

Codeforces1573B的更多相关文章

随机推荐

  1. MySQL——获取元数据

    ---------------------------------------------------------------------------------------------------- ...

  2. 使用 Dockerfile 自定义 Nginx 镜像

    一般来说,自定义Nginx只需要把静态文件放到镜像里就可以了,不需要重写 CMD 与 ENTRYPOINT.但是,如果的确需要在 Nginx 启动前执行一些操作,就需要重写 CMD 了,如果写成下边就 ...

  3. Selenium自动化实现web自动化-1

    框架搭建 基于maven+jdk8+junit5+seleium 构建 <dependencies> <dependency> <groupId>org.junit ...

  4. unity渲染篇:烘焙模型贴图

    今天要来做一件有趣的事情,那就是把一个模型数据烘焙到贴图上! 什么意思?就是下面酱紫,把这只小喵从第一张图拍扁,变成第二张图的样子(似乎有点残忍~) 可能你经常会从美术那边听到"烘焙光照贴图 ...

  5. 排查dubbo接口重复注销问题,我发现了一个巧妙的设计

    背景 我在公司内负责自研的dubbo注册中心相关工作,群里经常接到业务方反馈dubbo接口注销报错.经排查,确定是同一个接口调用了两次注销接口导致,由于我们的注册中心注销接口不能重复调用,调用第二次会 ...

  6. Kubernetes-Pod介绍(二)-生命周期

    前言 本篇是Kubernetes第五篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...

  7. @RequestParam、@RequestBody、@PathVariable区别和案例分析

    一.前言 @RequestParam.@RequestBody.@PathVariable都是用于在Controller层接收前端传递的数据,他们之间的使用场景不太一样,今天来介绍一下!! 二.实体类 ...

  8. XXE从0到1

    XXE从0到1 1. XXE概述 XXE(XML External Entity Injection)即XML外部实体注入.漏洞是在对不安全的外部实体数据进行处理时引发的安全问题. 下面我们主要介绍P ...

  9. Selenium系列5-XPath路径表达式

    Xpath介绍 XPath 使用路径表达式在 XML 文档中进行导航 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集.这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似. ...

  10. Mysql实现无插入有更新(不知主键的情况下)

    网上很多资料说有两种方式 (必须现有唯一键) 1.INSERT 中ON DUPLICATE KEY UPDATE的使用 2.REPLACE的使用 通过可以得出结果: 如果a和b字段 能决定唯一 例子: ...