BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论

BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论

大家好,又见面了,我是全栈君。

题目大意:反Nim游戏,即取走最后一个的人输

首先状态1:假设全部的堆都是1,那么堆数为偶先手必胜,否则先手必败

然后状态2:假设有两个堆数量同样且不为1,那么后手拥有控场能力,即:

若先手拿走一堆,那么后手能够选择将还有一堆留下1个或者全拿走,使这两堆终于仅仅剩1个或0个;

若先手将一堆拿剩一个,那么后手能够选择将还有一堆留下一个让先手拿或全拿走,使这两堆终于仅仅剩1个或0个;

若先手将一堆拿走一部分。那么后手能够将还有一堆相同拿走一部分,然后同上

状态3:若Xor!=0 那么先手能够先拿走一部分让Xor=0 然后同状态2先手必胜 否则先手必败

※鉴于本人过于沙茶,以上内容仅存在參考价值。无法证明正确性,欢迎指正

于是若全部堆全是1 Xor==0先手必胜 否则后手必胜

若有堆不是1 Xor==0后手必胜 否则先手必胜

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
bool Calculate()
{
	int i,x,xor_sum=0;
	bool flag=1;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		if(x^1) flag=0;
		xor_sum^=x;
	}
	if(flag)
		return !xor_sum;
	else
		return xor_sum;
}
int main()
{
	int T,i;
	for(cin>>T;T;T--)
	{
		if( Calculate() )
			puts("John");
		else
			puts("Brother");
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115489.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sudo命令 sudoers文件

    sudo命令 sudoers文件超级用户权限授权规则含义root ALL=(ALL:ALL)ALL用户名root ALL=(ALL:ALL)ALL主机名root ALL=(**ALL:ALL**)ALL目标用户:组,以谁的身份去执行root ALL=(ALL:ALL)**ALL**命令别名定义>Host_Alias:主机的列表>User_Alias:具有sudo权限的用户的列表

    2022年6月20日
    30
  • java从入门到精通_Java 入门到精通的过程

    java从入门到精通_Java 入门到精通的过程有读者留言说:“希望能写写前期阶段程序员的发展经历。”收到这个问题后确实引发了我的一些回忆和思考,回想如果让我再重走一遍过来的路,在哪些方面还需要去改善呢?以前并没有提及如何去做才能更好更快的发展成长,所以本篇借用了一个大家耳熟能详的名称模式,从一个稍微高一层的抽象维度来回答How的问题。定位还记得当初为什么选择程序员这个职业么?如今程序员所在的行业处于发展上升期,薪酬待遇整体高于传统行业,…

    2022年7月8日
    25
  • 命令行參数选项处理:getopt()及getopt_long()函数使用

    命令行參数选项处理:getopt()及getopt_long()函数使用

    2022年1月19日
    52
  • matlab计算基尼系数并分解_matlab斐波那契数列的第n项

    matlab计算基尼系数并分解_matlab斐波那契数列的第n项前两天想偷个懒在网上找了好久关于求基尼系数的现成公式,结果很令人失望,于是只好奋发图强自己动手啦。​开始之前还是先脑补一些什么是基尼系数?—————————————————————————————-​居民收入分配的差异程度,是当前人们所普遍关心的一个问题。收入分配差异的合理与否,一方…

    2022年10月13日
    5
  • mysql workbench怎么导入数据库sql文件_workbench导入数据

    mysql workbench怎么导入数据库sql文件_workbench导入数据如何导入数据库~!

    2022年9月1日
    31
  • java实训报告范文_java个人实训总结范文

    java实训报告范文_java个人实训总结范文java 个人实训总结范文总结是把一定阶段内的有关情况分析研究 做出有指导性的经验方法以及结论的书面材料 它在我们的学习 工作中起到呈上启下的作用 让我们一起认真地写一份总结吧 那么总结应该包括什么内容呢 下面是小编整理的 java 个人实训总结范文 希望对大家有所帮助 java 个人实训总结 1 此次只实训了短短的三周 虽说时间很短 但其中的每一天都使我收获很大 受益匪浅 它不但极大地加深了我对一些理论知识

    2025年6月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号