[博弈] hdu 5011 Game

来源:互联网 发布:杭州美工招聘信息 编辑:程序博客网 时间:2024/05/29 18:21

题意:n堆东西,每次至少取一个,取完可以把这堆剩下的分成两堆,谁先完谁赢,问先手胜负。

思路:其实分不分都一样。

如果当前Nim和为0,下一个状态必胜,那么对于当前堆我至少取一个,再怎么分也不可能分成和原来一样的。

如果Nim和不为0,那么就和普通Nim博弈一样,我必定可以取一堆使得Nim和为0。

代码:

#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"stack"#include"algorithm"#include"iostream"using namespace std;int main(){    int n;    while(scanf("%d",&n)!=-1)    {        int ans=0;        while(n--)        {            int x;            scanf("%d",&x);            ans^=x;        }        puts(ans?"Win":"Lose");    }    return 0;}


0 0
原创粉丝点击