题解:CF634A Island Puzzle

CF634A Island Puzzle 题解

分析

由于我们仅能移动 \(0\),所以其它数字的相对顺序较原来应该是不变的,所以我们从环中删除 \(0\) 再判断相对位置即可。

还有需要注意的是本题是一个环,找到末尾需要用取模操作回到开头继续比较。

示例代码

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5; 
int a[N],b[N];
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	cin>>n;
	int aa,bb;
	for(int i=0;i<n-1;i++)
	{
		cin>>a[i];
		if(a[i]==0)i--;
		if(a[i]==1)aa=i;
	}
	for(int i=0;i<n-1;i++)
	{
		cin>>b[i];
		if(b[i]==0)i--;
		if(b[i]==1)bb=i;
	}
//	for(int i=0;i<n;i++)cout<<a[i]<<" ";
//	cout<<endl;
//	for(int i=0;i<n;i++)cout<<b[i]<<" ";
//	cout<<endl;
	bool flag=1;
	for(int i=0;i<n-1;i++)
	{
//		cout<<a[(i+aa)%(n-1)]<<" "<<b[(i+bb)%(n-1)]<<endl;
		if(a[(i+aa)%(n-1)]!=b[(i+bb)%(n-1)])
		{
			flag=0;
			break;
		}
	}
	if(flag)cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
	return 0;
}
posted @ 2024-08-02 12:29  Ryan_Adam  阅读(4)  评论(0编辑  收藏  举报