其他分享
首页 > 其他分享> > Codeforces Round #743 (Div. 2) B. Swaps(思维)

Codeforces Round #743 (Div. 2) B. Swaps(思维)

作者:互联网

https://codeforces.com/contest/1573/problem/B

给定两个长度为n的数组,数组a和数组b
数组a包含从1到2*n的任意顺序的奇数,数组b包含从1到2*n的任意偶数

可执行的操作如下:

从两个数组中选择一个,从1到n-1中选择一个索引
交换第i和第i+1个元素
计算使得数组a在字典序上小于数组b的所需要的最少的移动次数。

input
3
2
3 1
4 2
3
5 3 1
2 4 6
5
7 5 9 1 3
2 4 6 10 8
output
0
2
3

#include<bits/stdc++.h>
using namespace std;
const int N=200200,M=2002;
int a[N],b[N];
int main()
{
    cin.tie(0); ios::sync_with_stdio(false);
    int T=1;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        map<int,int> mp;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
            mp[a[i]]=i;
        }
        for(int i=1;i<=n;i++)
        {
            cin>>b[i];
            mp[b[i]]=i;
        }
        sort(a+1,a+1+n);
        sort(b+1,b+1+n);
        //for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl;
        // for(int i=1;i<=n;i++) cout<<b[i]<<" "; cout<<endl;
        int minn=1e9,ans=1e9;
        for(int i=1;i<=n;i++)
        {
            minn=min(minn,mp[a[i]]);
            ans=min(ans,minn+mp[b[i]]-2);
            //cout<<minn<<" "<<ans<<endl;
        }
        cout<<ans<<endl;
    }
    return 0;
}

标签:sort,743,Swaps,int,Codeforces,cin,mp,数组,任意
来源: https://www.cnblogs.com/Vivian-0918/p/16610422.html