您的位置:首页 > 其它

hdu 1907 John (Nim变形)

2012-05-04 10:02 471 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1907

Nim的变形,最后取为败,详见/article/5075793.html中取火柴游戏2。

这里总结下结论:

1. 当所有堆个数都为1时,若为奇数堆,即异或不为0,则先手败,反之先手胜。

2. 非所有堆个数都为1时,则异或不为0先手胜。

用上述博文中的定义则为T0, S1, S2为必胜态,T1, S0为必败态。

code:

#include<cstdio>
int main(){
int t, n, f, i, a, sum ;
scanf("%d", &t) ;
while(t--){
sum = f = 0 ;
scanf("%d", &n) ;
for(i=0; i<n; i++){
scanf("%d", &a) ;
sum ^= a ;
if(a>1) f = 1 ;
}
if(sum) sum = 1 ;
if(f^sum) printf("Brother\n") ;
else printf("John\n") ;
}
return 0 ;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: