题解: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;
}