专栏文章

题解:SP20951 SNIM - Pebbles

SP20951题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio5gmqr
此快照首次捕获于
2025/12/02 13:40
3 个月前
此快照最后确认于
2025/12/02 13:40
3 个月前
查看原文
每次操作后序列单调不降,可以转换成在差分序列上进行操作,要求差分数组 did_i 恒大于 00
假设从第 ii 堆移走 kk 个石子,那么它相邻的两个差分值一个减少 kk,一个增加 kk。发现原问题转换成了在序列的差分数组上进行阶梯 Nim 游戏。
直接应用结论:先手必败当且仅当奇数堆的石子数异或和为 00
注意要从右往左编号。
CPP
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int N = 1005;
int n,a[N],c[N];

int main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T; cin>>T;
    while(T--){
        cin>>n; int ans = 0;
        for(int i=1;i<=n;i++) cin>>a[i],c[i]=a[i]-a[i-1];
        for(int i=n;i>=1;i-=2) ans^=c[i];
        if(ans) cout<<"TAK"<<endl;
        else cout<<"NIE"<<endl;
    }
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...