RT。我觉得大部分 80pts 应该跟我想的一样。
如果 ai=bi 那么 ai 肯定不是答案。所以将所有 ai=bi 的打上标记,然后从 0 扫到 n ,出现第一个没有打上标记的记作 ans ,那答案就是 n−ans .
我是这样理解的:如果ab两个序列中都没有出现 ans ,那 ans 一定可取;如果 ai 和 bi 中有 ans 那我就选另一个。
代码在下面QAQ
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int b[1000005];
bool d[1000005];
inline int read()
{
int x=0;
bool flag=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
flag=0;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+c-'0';
c=getchar();
}
return (flag?x:~(x-1));
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
a[i]=read();
for(int j=1;j<=n;j++)
b[j]=read();
for(int i=1;i<=n;i++)
if(a[i]==b[i])
d[a[i]]=true;
int ans;
for(int i=0;i<=n;i++)
if(!d[i])
{
ans=i;
break;
}
cout<<n-ans<<endl;
return 0;
}