BZOJ1115: [POI2009]石子游戏Kam

来源:互联网 发布:大数据时代宣传片 编辑:程序博客网 时间:2024/05/22 04:44

题目大意:给出N堆石子,除了第一堆以外,每堆的数目都不少于前一堆的数目,每次可以从任意一堆拿走任意多个石子,但要求拿完之后仍然保持题目中的性质,拿走最后一个的赢,问先手是否有必胜策略


由于题目中奇怪的限制,我们可以先差分一发

这样拿走石子就转化为了把石子移动到下一堆当中

问题就变成了一个纯的阶梯nim游戏(只有奇数阶梯的SG函数有用)


#include<iostream>#include<cstdio>using namespace std;int a[10001];int main(){int t,n,i,x;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);x=0;for(i=1;i<=n;i++)if((n-i)%2==0) x^=(a[i]-a[i-1]);if(!x) puts("NIE");else puts("TAK");}}

0 0
原创粉丝点击