蒟蒻求助80分(感觉思路没有问题)
查看原帖
蒟蒻求助80分(感觉思路没有问题)
214172
wpy233楼主2022/7/24 18:15

RTRT。我觉得大部分 80pts80{pts} 应该跟我想的一样。

如果 ai=bia_i=b_i 那么 aia_i 肯定不是答案。所以将所有 ai=bia_i=b_i 的打上标记,然后从 00 扫到 nn ,出现第一个没有打上标记的记作 ansans ,那答案就是 nansn-ans .

我是这样理解的:如果ab两个序列中都没有出现 ansans ,那 ansans 一定可取;如果 aia_ibib_i 中有 ansans 那我就选另一个。

代码在下面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;
}
2022/7/24 18:15
加载中...