poj解题报告——3480

来源:互联网 发布:天下3男脸数据 编辑:程序博客网 时间:2024/06/06 04:53

先手胜当且仅当
(1)所有堆石子数都为1且游戏的SG值为0 ,(2)存在某堆石子数大于1且游戏的SG值不为0
   证明:
(1)若所有堆石子数都为1且SG值为0,则共有偶数堆石子,故先手胜。
(2)
i)只有一堆石子数大于1时,我们总可以对该堆石子操作,使操作后石子堆数为奇数且所有堆得石子数均为1
ii)有超过一堆石子数大于1时,先手将SG值变为0即可,且总还存在某堆石子数大于1

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,x;int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&m);int flag=0;int sg=0;for(int i=1;i<=m;i++){scanf("%d",&x);sg^=x;if(x>1)flag=1;}if(!flag&&!sg)printf("John\n");else if(flag&&sg)printf("John\n");elseprintf("Brother\n");}return 0;}


0 0
原创粉丝点击