[POI 2009]SLW-Words
观察可以发现这个函数具有像斐波那契数列一样的序列
接着考虑这个函数的逆操作。
接着考虑答案为“NIE”时候的情况
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int t,n,a[N];
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>t;
while(t--){
bool f=1;
cin>>n;
for(int i=1;i<=n;++i)cin>>a[i];
while(n>1&&f){
if(!a[1])a[1]=2;
if(a[n]==1)a[n]=-1;
else if(a[n]==3)a[n]=2;
for(int i=2;i<=n;i++)
if(!a[i]){
if(a[i-1]==1)a[i]=-1,a[i-1]=2;
else if(a[i-1]==3)a[i-1]=a[i]=2;
else{f=0;break;}
}
int tp=0;
for(int i=1;i<=n;++i)if(a[i]!=-1)a[++tp]=a[i];
n=tp;
for(int i=1;i<=tp;++i)--a[i];
}
if(f)cout<<"TAK\n";
else cout<<"NIE\n";
}
return 0;
}

浙公网安备 33010602011771号