原题链接这里
C比B从各种意义上要简单一点,直接模拟就行……感觉我和圣诞老人都挺惨的hh
(我得改掉那种,没有足够的样例就发现不了自己漏洞的坏毛病,或者学会自己编corner case)
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b;
int n,m,t;
long long sum;
int bottom,temp;
int main(){
cin >> t;
while(t--){
cin >> n >> m;
sum = 0, bottom = -1;
for(int i = 1; i <= n; i++){
cin >> temp;
a[temp] = i;
}
for(int i = 1; i <= m; i++){
cin >> b;
if(a[b] > bottom){//当这个礼物比bottom还要下面,说明又要掏一遍底
bottom = a[b];
sum += (bottom-i)* 2;
//除了i个已经送出去的(当前i当作已送出去),其他bottom之前的都要掏出来放回去
}
}
cout << sum + m << endl; //白掏的次数+送礼物的次数就是答案
}
return 0;
}