CF187A Permutations 题解

题意

  • 给出两个长度为 \(n\) 的排列。
  • 每次可以把第一个排列末尾的数移到该排列中的任意位置。
  • 问需要多少次操作能使两个排列相等。
  • \(1 \le n \le 2 \times {10}^5\)

思路

我们可以将第一个排列作为最终排列,并将另一个队列的末尾数从末尾不断往前移,每次移动一位,然后比较。如果不相同,继续操作,直到两个排列相等。我这里用了两个循环。

代码

#include <iostream>
using namespace std;

int main() {
   int n,x,i,j=0;
   cin>>n;
   int a[n];
   for(i=0;i<n;i++)cin>>a[i];
   for(i=0;i<n;i++){ cin>>x; if(a[j]==x)j++;}
   cout<<n-j;
   return 0;
}


posted @ 2023-10-04 08:58  _Unnamed  阅读(6)  评论(0)    收藏  举报