BZOJ 1022 [SHOI2008]小约翰的游戏John
来源:互联网 发布:杭州师范大学知乎 编辑:程序博客网 时间:2024/06/10 06:30
本题与Nim游戏相反,无法移动的人获胜。
分类讨论:
·记 SG = a1^a2^…^an
(1)每一堆石子的数量都是1:
·若石子的堆数为偶数,先手必胜
·若石子的堆数为奇数,先手必败
(2)至少存在一堆石子的数量大于1:
该情况下,一定存在某一步操作使得当前局面从上述情况(2)变为上述情况(1),即一步将最后一堆大于1的石子变为0或1的操作。记操作前的局面为A,操作后的局面为B。A->B过程中,操作可以选择将这堆石子变为0或1。
根据Nim游戏的定义,本题中,可以令SG≠0代表先手必胜(考虑将A->B时最后一堆石子的变化改为令自己在本题中的条件下失败,则恰好符合Nim游戏定义,故相反可行)。
必胜局面SG≠0,胜者可以通过移动使传递给败者的局面SG=0。而败者局面SG=0,必定会将SG≠0的局面传递给胜者。不断循环,可知SG≠0时必胜。
·若SG≠0,先手必胜
·若SG=0,先手必败
#include<cstdio>int main(){ int T; scanf("%d",&T); while(T--) { int n, x, SG=0; bool allone=1; scanf("%d",&n); for(int i = 1; i <= n; i++) { scanf("%d",&x); SG^=x; if(x!=1)allone=0; } if(!allone && SG!=0 || allone && !SG)puts("John"); else puts("Brother"); }}
1 0
- BZOJ 1022: [SHOI2008]小约翰的游戏John
- BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论
- 【BZOJ 1022】 [SHOI2008]小约翰的游戏John
- BZOJ 1022 [SHOI2008]小约翰的游戏John
- BZOJ 1022 [SHOI2008]小约翰的游戏John
- bzoj 1022: [SHOI2008]小约翰的游戏John 博弈论
- 【BZOJ 1022】 [SHOI2008]小约翰的游戏John
- 【BZOJ】1022: [SHOI2008]小约翰的游戏John
- BZOJ 1022: [SHOI2008]小约翰的游戏John
- 1022: [SHOI2008]小约翰的游戏John
- 1022: [SHOI2008]小约翰的游戏John
- 1022: [SHOI2008]小约翰的游戏John
- bzoj 1022: [SHOI2008]小约翰的游戏John(反nim游戏)
- bzoj1022[SHOI2008]小约翰的游戏John
- bzoj1022 [SHOI2008]小约翰的游戏John
- bzoj1022: [SHOI2008]小约翰的游戏John
- bzoj1022: [SHOI2008]小约翰的游戏John
- bzoj1022 [SHOI2008]小约翰的游戏John
- LeetCode 238 Product of Array Except Self
- Android 6.0及以上版本的运行时权限介绍
- 星际争霸1没背景音乐的解决办法
- C# Winform使用WPF控件
- Android集成百度地图SDK
- BZOJ 1022 [SHOI2008]小约翰的游戏John
- java-基础-内部类
- laravel .htaccess问题
- 【leetcode73】经典算法-Guess Number Higher or Lower
- Leetcode之-题38
- 南阳OJ 461 Fibonacci数列(四)
- 操作MySQL报出: Duplicate key or integrity constraint violation message from server 问题解决
- poj 2049poj2049 - Finding Nemo
- 华为OJ 初级:输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数