A. Circle of Students
题目:https://codeforces.com/contest/1203/problem/A
题意:一堆人坐成一个环,问能否按逆时针或者顺时针正好是 1-n的顺序
思路:水题,把数组开两倍,或者标记当前位置都可以
#include<bits/stdc++.h> #define maxn 100005 #define mod 1000000007 using namespace std; typedef long long ll; int a[maxn],n; int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int dex=0; for(int i=1;i<=n;i++){ if(a[i]==1){ dex=i; break; } } int flag=0; int k=dex; int z=1,num=1; while(num<n){ k++; if(k==n+1) k=1; if(a[k]!=z+1) break; num++; z++; } if(num==n) flag=1; //printf("num=%d k=%d z=%d\n",num,k,z); k=dex; z=1,num=1; while(num<n){ k--; if(k==0) k=n; if(a[k]!=z+1) break; num++; z++; } if(num==n) flag=1; if(flag) printf("YES\n"); else printf("NO\n"); } }