【模板】nim 游戏

link

一道经典的博弈论题目。

首先说结论,先手必胜当且仅当所有堆的石头数异或和不为0。原因是假如所有堆的石头异或和不为0时必然有一种方法可以使得异或和变成0,而当异或和等于0时不论怎么取都会使得异或和变成非0数。这样下去总会有一个时候使得异或和为0后所有石头堆都为0,那么这样先手必胜。

感觉最近的随笔越来越水了。

#include<cstdio>
//#define zczc
inline void read(int &wh){
    wh=0;int f=1;char w=getchar();
    while(w<'0'||w>'9'){if(w=='-')f=-1;w=getchar();}
    while(w<='9'&&w>='0'){wh=wh*10+w-'0';w=getchar();}
    wh*=f;return;
}

int T,m,now,in;

signed main(){
	
	#ifdef zczc
	freopen("in.txt","r",stdin);
	#endif
	
	read(T);
	while(T--){
		read(m);now=0;
		while(m--){read(in);now^=in;}
		if(now)printf("Yes\n");
		else printf("No\n");
	}
	
	return 0;
}
posted @   Feyn618  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示