看从当前点到到不是1的点的位置,从奇偶性判断
代码:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<stack> #include<map> #include<set> #include<vector> #include<cmath> const int maxn=1e5+5; typedef long long ll; using namespace std; int a[maxn*2]; int main() { int n; cin>>n; int flag=0; for(int t=0;t<n;t++) { scanf("%d",&a[t]); if(a[t]!=1) { flag=1; } } if(flag==0) { if(n%2==0) { for(int t=0;t<n;t++) { printf("Second "); } } else { for(int t=0;t<n;t++) { printf("First "); } } } else { for(int t=n;t<2*n;t++) { a[t]=a[t-n]; } if(n==1) { printf("First "); return 0; } for(int t=0;t<n;t++) { if(a[t]==1) { int ans=0; for(int j=t;j<t+n;j++) { if(a[j]==1) { ans++; } else { break; } } if(ans%2==0) { printf("First "); } else { printf("Second "); } for(int j=0;j<ans-1&&t+j+1<n;j++) { if(ans%2==0&&j%2==0) { printf("Second "); } else if(ans%2==0&&j%2==1) { printf("First "); } else if(ans%2==1&&j%2==0) { printf("First "); } else if(ans%2==1&&j%2==1) { printf("Second "); } } //cout<<ans<<endl; t=t+ans-1; } else { printf("First "); } } } return 0; }