偶然间最糟糕的再会

Problem:偶然间最糟糕的再会

Description:
一天Murphyc从睡梦中醒来,发现自己居然穿越到了弹丸论破的世界。作为原作全成就通关的超高校级Gamer,Murphyc很清楚接下来会发生什么。为了中止Chiaki即将面临的“学级裁判”,Murphyc溜进了未来机关内部,但是只有持有特定编号的识别卡才能进入机关控制室。
好在,Murphyc其实还有另一重身份----法师学徒!虽然Murphyc手中只有门口警卫的识别卡,但机智的他发现该警卫的识别卡编号只要经过若干次Magic操作便可变为原作CG中某重要角色Chisa的的识别码。
Magic操作:对于i与j位置的两个数字你可以消耗|i-j|的魔力值以交换两个数字的位置。
例如
在这里插入图片描述

现在已知警卫的识别码为一个长度为n的整数序列a,ai<=n, Chisa的识别码为长度为n的整数序列b,bi<=n,并且,a、b序列均为[1,n]的全排列之一.为了节约魔力,请问Murphyc至少要消耗多少魔力才能获得Chisa的识别码?

Input:
第一行一个数字T代表测试的组数(T<=20)
对于每组测试,第一行一个数字n代表序列的长度(n<=2e5)
接下来一行有n个数字a1,a2,a3….an(1<=ai<=n)
接下来一行有n个数字b1,b2,b3…bn(1<=bi<=n)

Output:
对于每行输出一个整数

Sample Input:
1
4
2 3 4 1
1 3 4 2

Sample Output:
3

Language:C++

#include <iostream>
#include <cmath>
#define N 200010

using namespace std;

int main()
{
  int T;
  cin>>T;
  while(T--)
  {
    int n;
    cin>>n;
    long a[N],b[N],c[N];
    for(int i=1;i<=n;i++)
    {
      cin>>a[i];
      c[a[i]]=i;
    }
    for(int i=1;i<=n;i++) cin>>b[i];

    long ans=0;
    for(int i=1;i<=n;i++) ans+=fabs(c[b[i]]-i);
    cout<<ans/2<<endl;
  }
  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值