[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;
}
 
posted @ 2025-08-29 16:17  zhuoheng  阅读(12)  评论(0)    收藏  举报