#include #include #include using namespace std; typedef long long LL; LL T,n,m; LL a[200005]; LL pre[200005]; LL s[200005]; LL ans; char ans_str[5]; int main(){ scanf("%lld",&T); while(T--){ scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++){ scanf("%lld",&a[i]); pre[i]=(i%2!=a[i]%2); } s[0]=0; for(int i=1;i<=m;i++){ s[i]=s[i-1]+pre[i]; } ans_str[0]='N';ans_str[1]='I';ans_str[2]='T';ans_str[3]='\0'; if(s[m]!=m/2){//先手必胜的情况 if(s[m]>m/2)ans_str[0]='T';//如果1的数量大于N/2,就先让TIN操作 printf("%s\n",ans_str); continue; } ans=n-a[m]; for(int i=1;i<m;i++){ ans=min(ans,n-(a[m]-a[i]+1)-(s[m]-s[i]));//枚举一下i,计算答案 } if(ans&1)printf("TIN\n");//判断答案是奇数还是偶数 else printf("NIT\n"); } return 0; }

C++语言解决问题n##-题目描述nn给出长度为-$n$-的-01-序列-$a_1sim-n$序列中有偶数个-1。NIT-和-TIN-轮流做以下操作NIT-先手:nn--选择位置-$i-1le-ile-n$满足区间-$1i$-中有奇数个-1。再选择位置-$j-ijle-n$。将-$a_ia_j$-都取反即0-变-11-变-0nn当整个序列中的所有元素都变为-0-时当前轮到的人就无法操作他就输了。假设-NIT-和-TIN-都绝顶聪明谁会赢?可以证明游戏总会结束。nn$n$-可能很大但序列中-$1$

原文地址: https://www.cveoy.top/t/topic/q6R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录