(1)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规
定每次至少取一个,最多取m个。最后取光者得胜。
(2)威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同
时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
(3)尼姆博奕(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的
物品,规定每次至少取一个,多者不限,最后取光者得胜。
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1907
简单分析: 这个题分两种情况。 各种糖果数量全部为1。 那么, 每次减少一堆, 由n的奇偶性便可判断出结果。 另一种情况便是不全为1。 那么直接用尼姆博弈的计算方法就可以得出结果。
#include<cstdio> int main() { int a[60]; int T, n; scanf("%d", &T); while(T--) { scanf("%d", &n); int temp = 0; int ans; for(int i=0; i<n; i++) { scanf("%d", &a[i]); if(i==0) ans = a[i]; else ans = ans^a[i]; if(a[i]>1) temp = 1; } if(temp==0)//全是孤单堆。 { if(n%2) printf("Brother\n"); else printf("John\n"); continue; } if(ans==0) printf("Brother\n"); else printf("John\n"); } return 0; }
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2509
和上题完全一样的题目。
时间: 2024-10-11 00:12:57